Namensbereiche | Klassen | Makrodefinitionen | Typdefinitionen | Aufzählungen | Aufzählungswerte | Funktionen | Variablen | Freundbeziehungen
Basic event routing functions

This group contains functions and classes that can be used to set up a generic event routing. Mehr ...

Zusammengehörigkeiten von Basic event routing functions:

Namensbereiche

 mutabor
 not for headers
 
 mutaborGUI
 not for headers
 
 mutabor::hidden
 
 compat30
 

Klassen

class  mutabor::BoxClass
 
class  mutabor::BoxClass::tone
 
struct  mutabor::BoxClass::ChangedCallback
 
struct  mutabor::BoxClass::logic_entry
 
struct  mutabor::BoxClass::tone_entry
 
struct  mutabor::BoxClass::tone_system
 
struct  mutabor::BoxClass::current_tone_entry
 
struct  mutabor::BoxClass::CompileCallback
 
struct  mutabor::BoxClass::BoxLock
 
struct  mutabor::BoxClass::scoped_watchdog
 
class  mutabor::BoxClass::set_callback
 
class  mutabor::BoxFactory
 
struct  mutabor::BoxFactory::BoxNotCreated
 
struct  mutabor::BoxFactory::FactoryNotFound
 
class  mutabor::ScopedBox
 
class  mutabor::ChannelData
 
class  mutabor::Device
 
class  mutabor::CommonTypedDeviceAPI< T, P, L >
 
class  mutabor::OutputDeviceClass
 
class  mutabor::InputDeviceClass
 
struct  mutabor::InputDeviceClass::current_keys_type
 
struct  mutabor::InputDeviceClass::current_keys_type::entry
 
struct  mutabor::InputDeviceClass::current_keys_type::hash_type
 
class  mutabor::DeviceFactory
 
struct  mutabor::DeviceFactory::DeviceNotCreated
 
class  mutabor::ScopedInputDevice
 
class  mutabor::ScopedOutputDevice
 
class  GisToken
 
class  GisSequenz
 
class  GisSegment
 
class  GisTag
 
class  GisTagBegin
 
class  GisTagEnd
 
class  GisNote
 
class  GisParaInt
 
class  GisParaReal
 
class  GisParaStr
 
class  GisComma
 
class  GisReadHead
 
struct  TagListData
 
class  GisReadArtHead
 
class  GisWriteHead
 
class  ChordNote
 
struct  MyCompileCallback
 
class  InputMidiFileTest
 not for headers Mehr ...
 
class  OutputMidiFileTest
 
class  midicmnOutputDevice
 not for headers Mehr ...
 
class  CommonMidiOutputTest
 
class  midicmnInputDevice
 
class  CommonMidiInputTest
 
class  mutabor::TRouteClass< I, O, B >
 Class for managing routing. Mehr ...
 
class  mutabor::TRouteClass< I, O, B >::NoOutputDevice
 
class  mutabor::TRouteClass< I, O, B >::NoInputDevice
 
class  mutabor::RouteFactory
 Class for creation of Routes. Mehr ...
 
struct  mutabor::RouteFactory::FactoryAlreadySet
 Douplicate route factory exception. Mehr ...
 
struct  mutabor::RouteFactory::RouteFactoryNotSet
 
class  mutabor::ScopedRoute
 
class  compat30::RouteIOError
 

Makrodefinitionen

#define ROUTING_BOX_INLINES
 
#define ROUTING_BOX_INLINES_PRECOMPILED
 
#define ROUTING_BOX_H
 
#define HIDE_MUTABOR_C_API
 
#define ROUTING_BOX_H_PRECOMPILED
 
#define MU32_ROUTING_MIDI_COMMONFILEDEVICE_H
 
#define MU32_ROUTING_MIDI_COMMONFILEDEVICE_H_PRECOMPILED
 
#define ROUTING_DEVICE_INLINES
 
#define ROUTING_DEVICE_INLINES_PRECOMPILED
 
#define MU32_ROUTING_DEVICE_H
 
#define MU32_ROUTING_DEVICE_H_PRECOMPILED
 
#define DRUMCHANNEL   9
 
#define DeviceMaxType   DTGis+1
 
#define SRC_KERNEL_ROUTING_EVENT_H
 
#define SRC_KERNEL_ROUTING_EVENT_H_PRECOMPILED
 
#define MMSYSTEM_H
 
#define MU32_ROUTING_GMN_DEVGIS_H
 
#define MU32_ROUTING_GMN_DEVGIS_H_PRECOMPILED
 
#define strdupchr(a)   (a)
 
#define AddStr(s1, s2, s3)   (s1 += s2 + s3)
 
#define MU32_ROUTING_GMN_GIS_H
 
#define MU32_ROUTING_GMN_GIS_H_PRECOMPILED
 
#define FOR_MUTWIN
 
#define CHECKDUP(target, source)   target = source;
 
#define NTAGS   52
 
#define NTAGSHORTS   6
 
#define TTintens   1
 
#define TTslur   2
 
#define TTtempo   12
 
#define TTinstr   19
 
#define TTtie   20
 
#define TTstacc   21
 
#define TTaccent   22
 
#define TTten   23
 
#define TTkey   36
 
#define TToct   37
 
#define TTalter   50
 
#define TTmutabor   51
 
#define GMN_NO_KEY   -32000
 
#define ZIFFER   (('0') <= t[i] && t[i] <= ('9'))
 
#define TAG   ((GisTag*)Cursor)
 
#define TAGEND   ((GisTagEnd*)Cursor)
 
#define NOTE1   ((GisNote*)note1)
 
#define NOTE2   ((GisNote*)note2)
 
#define NOTE   ((GisNote*)note)
 
#define WTAG   ((GisTag*)(*Cursor))
 
#define WTAGEND   ((GisTagEnd*)token)
 
#define MU32_ROUTING_GMN_GIS_HEAD_H
 
#define MU32_ROUTING_GMN_GIS_HEAD_H_PRECOMPILED
 
#define CNAlter   1
 
#define CNNoteOn   2
 
#define SepPos   SepPos()
 
#define BracketDeep   (Brackets.length())
 
#define NEW_LINE   "\n"
 
#define uchar   unsigned char
 
#define CHAR0   CurrentLine[CurrentPos]
 
#define CHAR1   CurrentLine[CurrentPos+1]
 
#define TAKESEP   takesep()
 
#define MU32_ROUTING_GMN_GSP_H
 
#define MU32_ROUTING_GMN_GSP_H_PRECOMPILED
 
#define MU32_ROUTING_GMN_GSP_FILE_H
 
#define MU32_ROUTING_GMN_GSP_FILE_H_PRECOMPILED
 
#define H_MMSYSTEM
 
#define MU32_ROUTING_MIDI_DEVMIDF_H
 
#define MU32_ROUTING_MIDI_DEVMIDF_H_PRECOMPILED
 
#define MU32_ROUTING_MIDI_DEVMIDI_H
 
#define MU32_ROUTING_MIDI_DEVMIDI_H_PRECOMPILED
 
#define H_MMSYSTEM
 
#define ROUTING_MIDICMN_H
 
#define ROUTING_MIDICMN_H_PRECOMPILED
 
#define DEFAULT_BENDING_RANGE   2l
 
#define DEVFMIDFTEST_H
 
#define DEVFMIDFTEST_H_PRECOMPILED
 
#define MIDICMNTEST_H
 
#define MIDICMNTEST_H_PRECOMPILED
 
#define MU32_ROUTING_ROUTE_INLINES_H
 
#define MU32_ROUTING_ROUTE_INLINES_H_PRECOMPILED
 
#define READCONFIGSTR(config, name, variable, defval)
 
#define READCONFIGINT(config, name, variable, defval)
 
#define MU32_ROUTING_ROUTE_H
 
#define MU32_ROUTING_ROUTE_H_PRECOMPILED
 
#define MU32_ROUTING_ROUTECOMPAT_H
 
#define MU32_ROUTING_ROUTECOMPAT_H_PRECOMPILED
 
#define SRC_KERNEL_ROUTING_THREAD_H
 
#define SRC_KERNEL_ROUTING_THREAD_H_PRECOMPILED
 
#define MUTABOR_THREAD_OK   wxMUTEX_NO_ERROR
 
#define ROUTING_TIMINGPARAMS
 
#define ROUTING_TIMINGPARAMS_PRECOMPILED
 
#define MUTABOR_NO_DELTA   (std::numeric_limits<mutint64>::max())
 
#define SRC_KERNEL_ROUTING_WATCHDOG_H
 
#define SRC_KERNEL_ROUTING_WATCHDOG_H_PRECOMPILED
 

Typdefinitionen

typedef struct keyboard_ereignis mutabor::hidden::keyboard_action
 
typedef struct midi_ereignis mutabor::hidden::midi_action
 
typedef struct harmonie_ereignis mutabor::hidden::harmony_action
 
typedef hidden::mutabor_error_type mutabor::error_type
 
typedef boost::intrusive_ptr
< BoxClass > 
mutabor::Box
 
typedef std::vector< Box > mutabor::BoxListType
 
typedef hidden::mutabor_tone mutabor::BoxClass::tone::base
 
typedef tone mutabor::BoxClass::interval
 
typedef mutabor::hidden::do_aktion mutabor::BoxClass::ChangedCallback::action
 
typedef BoxListType mutabor::BoxClass::listtype
 
typedef std::list< logic_entry > mutabor::BoxClass::logic_list
 
typedef std::vector< tone_entry > mutabor::BoxClass::tone_list
 
typedef std::vector
< current_tone_entry > 
mutabor::BoxClass::current_tone_list
 
typedef std::vector< BoxFactory * > mutabor::BoxFactory::factorylist
 
typedef std::vector< uint8_t > mutabor::midi_string
 
typedef std::vector< int > mutabor::ChannelData::controller_vector
 
typedef T mutabor::CommonTypedDeviceAPI< T, P, L >::thistype
 
typedef P mutabor::CommonTypedDeviceAPI< T, P, L >::DevicePtr
 
typedef L mutabor::CommonTypedDeviceAPI< T, P, L >::listtype
 
typedef CommonTypedDeviceAPI
< OutputDeviceClass >
::DevicePtr 
mutabor::OutputDevice
 
typedef CommonTypedDeviceAPI
< OutputDeviceClass >
::listtype 
mutabor::OutputDeviceList
 
typedef std::set< OutputDevice > mutabor::OutputDeviceSet
 
typedef CommonTypedDeviceAPI
< InputDeviceClass >
::DevicePtr 
mutabor::InputDevice
 
typedef CommonTypedDeviceAPI
< InputDeviceClass >::listtype 
mutabor::InputDeviceList
 
typedef
boost::unordered_multiset
< entry, hash_type > 
mutabor::InputDeviceClass::current_keys_type::map_type
 
typedef map_type::iterator mutabor::InputDeviceClass::current_keys_type::iterator
 
typedef map_type::const_iterator mutabor::InputDeviceClass::current_keys_type::const_iterator
 
typedef std::vector
< DeviceFactory * > 
mutabor::DeviceFactory::factorylist
 
typedef void GisReadProceed (GisReadHead *, char)
 
typedef struct TagListData TagList
 
typedef void GisReadArtProceed (GisReadArtHead *token, char turn)
 
typedef boost::intrusive_ptr
< event_class > 
mutabor::event
 
typedef TRouteClass mutabor::TRouteClass< I, O, B >::thistype
 
typedef I mutabor::TRouteClass< I, O, B >::InputDevice
 
typedef O mutabor::TRouteClass< I, O, B >::OutputDevice
 
typedef B mutabor::TRouteClass< I, O, B >::Box
 
typedef boost::intrusive_ptr
< TRouteClass > 
mutabor::TRouteClass< I, O, B >::Route
 
typedef std::list< Route > mutabor::TRouteClass< I, O, B >::routeListType
 
typedef std::list< thistype * > mutabor::TRouteClass< I, O, B >::routePtrList
 
typedef TRouteClass
< InputDevice, OutputDevice,
Box >::Route 
mutabor::Route
 
typedef TRouteClass
< InputDevice, OutputDevice,
Box > 
mutabor::RouteClass
 
typedef TRouteClass
< InputDevice, OutputDevice,
Box >::routeListType 
mutabor::routeListType
 
typedef TRouteClass
< InputDevice, OutputDevice,
Box >::routePtrList 
mutabor::routePtrList
 

Aufzählungen

enum  mutabor::BoxType {
  mutabor::MIN_BOX = -3, mutabor::NewBox = -3, mutabor::NoBox, mutabor::GmnBox,
  mutabor::Box0 = 0
}
 
enum  mutabor::BoxClass::interval_type_constants {
  mutabor::BoxClass::invalid_interval = hidden::mutabor_invalid_interval, mutabor::BoxClass::active_interval = hidden::mutabor_active_interval, mutabor::BoxClass::empty_interval = hidden::mutabor_empty_interval, mutabor::BoxClass::invalid_tone = hidden::mutabor_invalid_tone,
  mutabor::BoxClass::active_tone = hidden::mutabor_active_tone, mutabor::BoxClass::empty_tone = hidden::mutabor_empty_tone
}
 
enum  mutabor::BoxClass::boxidtype { mutabor::BoxClass::IDTypeSession, mutabor::BoxClass::IDTypeFile }
 
enum  mutabor::BoxClass::ChangedCallback::ChangedFlags { mutabor::BoxClass::ChangedCallback::BoxChanged = 1, mutabor::BoxClass::ChangedCallback::LogicChanged = 2, mutabor::BoxClass::ChangedCallback::KeysChanged = 4, mutabor::BoxClass::ChangedCallback::ActionChanged = 8 }
 
enum  { mutabor::BoxClass::logic_entry::none, mutabor::BoxClass::logic_entry::Logic, mutabor::BoxClass::logic_entry::CurrentLogic }
 
enum  { mutabor::BoxClass::tone_entry::sounding, mutabor::BoxClass::tone_entry::silent, mutabor::BoxClass::tone_entry::invalid }
 
enum  mutabor::BoxClass::KeyboardFlags { mutabor::BoxClass::KeyboardNoLogic, mutabor::BoxClass::KeyboardLogic, mutabor::BoxClass::KeyboardAny }
 
enum  { mutabor::OpenAllBoxes = 0x01, mutabor::OpenAllOutDevices = 0x02, mutabor::OpenAllInDevices = 0x04 }
 
enum  mutabor::MutaborModeType {
  mutabor::DeviceUnregistered = -1, mutabor::DeviceInitializing, mutabor::DeviceStop, mutabor::DevicePlay,
  mutabor::DevicePause, mutabor::DeviceCompileError, mutabor::DeviceTimingError, mutabor::DeviceKilled
}
 
enum  mutabor::DevType {
  mutabor::DTNotSet = -1, mutabor::DTUnknown, mutabor::DTMidiPort, mutabor::DTMidiFile,
  mutabor::DTGis
}
 
enum  mutabor::Device::devidtype { mutabor::Device::IDTypeSession, mutabor::Device::IDTypeFile, mutabor::Device::IDTypeHardware }
 
enum  mutabor::InputDeviceClass::wxThreadWait { mutabor::InputDeviceClass::wxTHREAD_WAIT_BLOCK, mutabor::InputDeviceClass::wxTHREAD_WAIT_YIELD, mutabor::InputDeviceClass::wxTHREAD_WAIT_DEFAULT }
 
enum  GisType {
  GTNull, GTUnknown, GTSequenz, GTSegment,
  GTTag, GTTagBegin, GTTagEnd, GTNote,
  GTParaInt, GTParaReal, GTParaStr, GTComma
}
 
enum  ARType {
  ARNormal, ARSlur, ARTenuto, ARPortato,
  ARStaccatto
}
 
enum  mutabor::RouteType { mutabor::RTall, mutabor::RTelse, mutabor::RTchannel, mutabor::RTstaff }
 Type of route input filter. Mehr ...
 

Funktionen

const char * mutabor::to_string (error_type type)
 
 mutabor::BoxClass::tone::tone ()
 
 mutabor::BoxClass::tone::tone (base t)
 
 mutabor::BoxClass::tone::tone (int inkey)
 
bool mutabor::BoxClass::tone::is_ok ()
 
bool mutabor::BoxClass::tone::is_active ()
 
bool mutabor::BoxClass::tone::is_empty ()
 
interval_type_constants mutabor::BoxClass::tone::get_type () const
 
long mutabor::BoxClass::tone::get_bend () const
 Return the microtonal part of the in fixed point integer format. Mehr ...
 
long mutabor::BoxClass::tone::get_pitch () const
 
mutint64 mutabor::BoxClass::tone::get_value () const
 
void mutabor::BoxClass::tone::add_value (mutint64 &retval) const
 
bool mutabor::BoxClass::tone::operator== (const tone &t) const
 
 mutabor::BoxClass::ChangedCallback::ChangedCallback (Box &b)
 
 mutabor::BoxClass::ChangedCallback::~ChangedCallback ()
 
virtual void mutabor::BoxClass::ChangedCallback::SetBox (Box &b)
 
virtual void mutabor::BoxClass::ChangedCallback::BoxChangedAction (int flags)=0
 
virtual void mutabor::BoxClass::ChangedCallback::BoxChangedAction (const char *action)
 
virtual mutabor::BoxClass::~BoxClass ()
 
size_t mutabor::BoxClass::get_session_id () const
 
virtual BoxType mutabor::BoxClass::GetType ()
 
virtual std::string mutabor::BoxClass::GetTypeName ()
 
virtual std::string mutabor::BoxClass::GetLabel ()
 
bool mutabor::BoxClass::IsNormal ()
 
int mutabor::BoxClass::get_routefile_id () const
 
virtual void mutabor::BoxClass::set_routefile_id (int id)
 
static int mutabor::BoxClass::GetNextFreeBox ()
 
virtual void mutabor::BoxClass::Save (tree_storage &config)
 Save current device settings in a tree storage. Mehr ...
 
virtual void mutabor::BoxClass::Save (tree_storage &config, const RouteClass *route)
 Save route settings (filter settings) for a given route. Mehr ...
 
virtual void mutabor::BoxClass::Load (tree_storage &config)
 Load current device settings from a tree storage. Mehr ...
 
virtual void mutabor::BoxClass::Load (tree_storage &config, RouteClass *route)
 Load route settings (filter settings) for a given route. Mehr ...
 
virtual void mutabor::BoxClass::Add (Route &route)
 add a route Mehr ...
 
virtual bool mutabor::BoxClass::Replace (Route &oldRoute, Route &newRoute)
 replace a route Mehr ...
 
virtual bool mutabor::BoxClass::Remove (Route &route)
 remove a route Mehr ...
 
virtual bool mutabor::BoxClass::MoveRoutes (Box &newclass)
 Move routes to another device. Mehr ...
 
const routeListType & mutabor::BoxClass::GetRoutes () const
 
routeListType & mutabor::BoxClass::GetRoutes ()
 
static const listtype & mutabor::BoxClass::GetBoxList ()
 
static Box mutabor::BoxClass::GetBox (int id, boxidtype kind)
 Scan the list of Boxes for a given id. Mehr ...
 
static Box mutabor::BoxClass::GetOrCreateBox (int id)
 Return the box that is associated with the corrent id. Mehr ...
 
virtual int mutabor::BoxClass::MoveInList (int count)
 Move the box in the box list. Mehr ...
 
static void mutabor::BoxClass::ClearBoxList ()
 
virtual void mutabor::BoxClass::DisconnectFromAll ()
 Disconnect the device from all pairings with routes GUI data or something else. Mehr ...
 
virtual void mutabor::BoxClass::Panic (int type)
 reset the device if requested Mehr ...
 
virtual void mutabor::BoxClass::Panic (Route r, int type)
 
virtual void mutabor::BoxClass::Panic (Route r, int type, size_t unique_id)
 
virtual void mutabor::BoxClass::Reset ()
 
bool mutabor::BoxClass::Open ()
 
void mutabor::BoxClass::Close ()
 
virtual bool mutabor::BoxClass::DoOpen ()
 
virtual void mutabor::BoxClass::DoClose ()
 
bool mutabor::BoxClass::IsOpen ()
 
static void mutabor::BoxClass::CloseAll ()
 Close all boxes. Mehr ...
 
static bool mutabor::BoxClass::ActivateAll (bool isRealtime)
 Activate all boxes. Mehr ...
 
static void mutabor::BoxClass::StopAll ()
 Stop all boxes. Mehr ...
 
logic_list mutabor::BoxClass::GetLogics ()
 Get a list of currently defined logics. Mehr ...
 
 mutabor::BoxClass::tone_entry::tone_entry (double p)
 
 mutabor::BoxClass::tone_entry::tone_entry ()
 
tone_system mutabor::BoxClass::GetToneSystem ()
 
 mutabor::BoxClass::current_tone_entry::current_tone_entry ()
 
 mutabor::BoxClass::current_tone_entry::current_tone_entry (int ind, double p, size_t i, int c)
 
current_tone_list mutabor::BoxClass::GetCurrentTones ()
 
virtual void mutabor::BoxClass::CompileCallback::Refresh ()=0
 
virtual void mutabor::BoxClass::CompileCallback::SetStatus (std::string status)=0
 
virtual void mutabor::BoxClass::CompileCallback::SetMessage (std::string message)=0
 
virtual void mutabor::BoxClass::CompileCallback::SetStatus (int logics, int tones, int tunings, int tone_systems, int intervals, int characters)=0
 
virtual void mutabor::BoxClass::CompileCallback::SetLine (int number)=0
 
bool mutabor::BoxClass::Compile (CompileCallback *callback, const char *logic)
 
static void mutabor::BoxClass::compile_callback (struct mutabor_box_type *b, int line_number)
 
void mutabor::BoxClass::MidiAnalysis (const std::vector< unsigned char > *midiCode)
 
void mutabor::BoxClass::MidiOut (struct midiliste *outliste)
 
static void mutabor::BoxClass::MidiOutCallback (struct mutabor::hidden::mutabor_box_type *b, struct mutabor::hidden::midiliste *outliste)
 
void mutabor::BoxClass::UpdateTones ()
 Update the currently playing tones to the current tone system. Mehr ...
 
int mutabor::BoxClass::GetChannel (int key, size_t channel, size_t id)
 Get the MIDI channel of a given tone. Mehr ...
 
void mutabor::BoxClass::AddNote (int note, size_t id, size_t channel, void *userdata)
 
void mutabor::BoxClass::DeleteNote (int note, size_t id, int channel)
 
bool mutabor::BoxClass::IsLogicKey (int key)
 
void mutabor::BoxClass::KeyboardAnalysis (int key, KeyboardFlags flags)
 Execute the action associated with a key that is pressed on the computer keyboard. Mehr ...
 
void mutabor::BoxClass::KeyboardAnalysis (const std::string keys)
 Execute the actions that are associated with the characters of a string. Mehr ...
 
tone mutabor::BoxClass::get_frequency (int note)
 
int mutabor::BoxClass::get_index (int note)
 
int mutabor::BoxClass::get_distance (int note)
 
void mutabor::BoxClass::interrupt_logic (bool allow_resume=true)
 Break the execution of any running logic loops. Mehr ...
 
void mutabor::BoxClass::resume_logic ()
 Allow the execution of logic actions after this function has been disabled. Mehr ...
 
void mutabor::BoxClass::SetLogic (Box b)
 
virtual void mutabor::BoxClass::Activate ()
 Activate the current box. Mehr ...
 
virtual void mutabor::BoxClass::Destroy ()
 Destroy the current object. Mehr ...
 
static void mutabor::BoxClass::InitializeIds ()
 Initialize the internal device identifiers. Mehr ...
 
 mutabor::BoxClass::operator std::string () const
 
virtual void mutabor::BoxClass::runtime_error (error_type type, const char *message)
 Process an error message (doing the real work) Mehr ...
 
void mutabor::BoxClass::issue_error (error_type type, const char *format,...)
 Format and process a runtime error message or warning. Mehr ...
 
virtual const std::string mutabor::BoxClass::get_errors ()
 Return the collected errors and warnings. Mehr ...
 
std::string mutabor::BoxClass::ActionToString (ChangedCallback::action *action)
 
static void mutabor::BoxClass::log_action (mutabor_box_type *box, const char *action)
 
static void mutabor::BoxClass::UpdateCallback (struct mutabor_box_type *b, unsigned int flags)
 
static void mutabor::BoxClass::lock_callback (hidden::mutabor_logic_parsed *logic)
 
static void mutabor::BoxClass::unlock_callback (hidden::mutabor_logic_parsed *logic)
 
static void mutabor::BoxClass::free_mutex_callback (hidden::mutabor_logic_parsed *logic)
 
void mutabor::BoxClass::dog_watching ()
 
template<class T >
void mutabor::BoxClass::remove_watchdog (T dog)
 
 mutabor::BoxClass::BoxLock::BoxLock (BoxClass *b)
 
 mutabor::BoxClass::BoxLock::~BoxLock ()
 
 mutabor::BoxClass::scoped_watchdog::scoped_watchdog (BoxClass *b)
 
 mutabor::BoxClass::scoped_watchdog::~scoped_watchdog ()
 
 mutabor::BoxClass::set_callback::set_callback (BoxClass *b, CompileCallback *callback)
 
 mutabor::BoxClass::set_callback::~set_callback ()
 
 mutabor::BoxClass::BoxClass (int id=-1)
 
void mutabor::BoxClass::Register (ChangedCallback *callback)
 
void mutabor::BoxClass::Unregister (ChangedCallback *callback)
 
void mutabor::BoxClass::ExecuteCallbacks (unsigned int flags)
 
void mutabor::BoxClass::ExecuteCallbacks (const char *action)
 
static void mutabor::BoxClass::AppendToBoxList (Box dev)
 
static void mutabor::BoxClass::RemoveFromBoxList (Box dev)
 
static listtype::iterator mutabor::BoxClass::FindInBoxList (Box b)
 
static bool mutabor::BoxClass::IsInBoxList (const Box b)
 
static void mutabor::BoxClass::TruncateBoxList (Box dev)
 
 mutabor::BoxFactory::FactoryNotFound::FactoryNotFound (int i)
 
virtual mutabor::BoxFactory::FactoryNotFound::~FactoryNotFound () throw ()
 
virtual const char * mutabor::BoxFactory::FactoryNotFound::what (void) const throw ()
 Returns the thrown error message as a c-style string. Mehr ...
 
 mutabor::BoxFactory::BoxFactory (size_t id=0)
 
virtual mutabor::BoxFactory::~BoxFactory ()
 
static Box mutabor::BoxFactory::Create (int type, int id=NewBox)
 
static void mutabor::BoxFactory::Destroy ()
 
static void mutabor::BoxFactory::LoadBoxes (tree_storage &config)
 load the routes from a tree based configuration Mehr ...
 
static void mutabor::BoxFactory::SaveBoxes (tree_storage &config)
 write the routes to the configuration Mehr ...
 
virtual size_t mutabor::BoxFactory::GetType ()
 
virtual BoxClass * mutabor::BoxFactory::DoCreateBox (int id=-1) const
 
virtual void mutabor::BoxFactory::DoLoadBoxes (tree_storage &config) const
 load the routes from a tree based configuration Mehr ...
 
virtual void mutabor::BoxFactory::DoSaveBoxes (tree_storage &config) const
 write the routes to the configuration Mehr ...
 
 mutabor::ScopedBox::~ScopedBox ()
 
 mutabor::ScopedBox::ScopedBox (BoxClass *rhs)
 
 mutabor::ScopedBox::ScopedBox (const Box &rhs)
 
ScopedBox & mutabor::ScopedBox::operator= (BoxClass *rhs)
 
ScopedBox & mutabor::ScopedBox::operator= (const Box &rhs)
 
void mutabor::Panic (int type)
 
void mutabor::BoxClose ()
 
bool mutabor::OpenAll (int mode)
 
void mutabor::initialize_box_data ()
 
 mutabor::ChannelData::ChannelData (int sound=-1)
 
void mutabor::ChannelData::Reset ()
 
void mutabor::ChannelData::MidiReset ()
 Reset the controllers according to the MIDI standard. Mehr ...
 
int mutabor::ChannelData::set_controller (size_t number, int data)
 
int mutabor::ChannelData::get_index (int message)
 
int mutabor::ChannelData::get_controller (size_t number) const
 
bool mutabor::ChannelData::get_hold () const
 Check whether one of the hold switches is active. Mehr ...
 
controller_vector::const_iterator mutabor::ChannelData::get_first_changed_controller () const
 Get the first changed controller. Mehr ...
 
controller_vector::const_iterator mutabor::ChannelData::get_first_changed_controller (const ChannelData &other) const
 Get the first changed controller that differs from the corresponding controller in another channel. Mehr ...
 
controller_vector::const_iterator mutabor::ChannelData::get_next_changed_controller (controller_vector::const_iterator last) const
 Get the first changed controller. Mehr ...
 
controller_vector::const_iterator mutabor::ChannelData::get_next_changed_controller (const ChannelData &other, controller_vector::const_iterator last) const
 Get the first changed controller that differs from the corresponding controller in another channel. Mehr ...
 
bool mutabor::ChannelData::is_changed_controller (controller_vector::const_iterator actual) const
 
void mutabor::ChannelData::program_change (int program)
 
void mutabor::ChannelData::program_change (const ChannelData &o)
 
bool mutabor::ChannelData::is_compatible (const ChannelData &cd) const
 
int mutabor::ChannelData::get_bend ()
 
void mutabor::ChannelData::set_bend (int b)
 
int mutabor::ChannelData::get_program () const
 
int mutabor::ChannelData::get_bank_coarse () const
 
int mutabor::ChannelData::get_bank_fine () const
 
virtual mutabor::Device::~Device ()
 
virtual void mutabor::Device::Save (tree_storage &config)=0
 Save current device settings in a tree storage. Mehr ...
 
virtual void mutabor::Device::Save (tree_storage &config, const RouteClass *route)=0
 Save route settings (filter settings) for a given route. Mehr ...
 
virtual void mutabor::Device::Load (tree_storage &config)=0
 Load current device settings from a tree storage. Mehr ...
 
virtual void mutabor::Device::Load (tree_storage &config, RouteClass *route)=0
 Load route settings (filter settings) for a given route. Mehr ...
 
virtual void mutabor::Device::Add (Route &route)=0
 add a route Mehr ...
 
virtual bool mutabor::Device::Replace (Route &oldRoute, Route &newRoute)=0
 replace a route Mehr ...
 
virtual bool mutabor::Device::Remove (Route &route)=0
 remove a route Mehr ...
 
virtual void mutabor::Device::Panic (int type)=0
 reset the device if requested Mehr ...
 
virtual void mutabor::Device::Play ()
 Start playback or recording of the device. Mehr ...
 
virtual void mutabor::Device::Pause ()
 Pause playback or recording of the device. Mehr ...
 
virtual void mutabor::Device::Stop ()
 Stop playback or recording of the device. Mehr ...
 
virtual void mutabor::Device::SetMode (MutaborModeType m)
 
MutaborModeType mutabor::Device::GetMode ()
 
virtual void mutabor::Device::runtime_error (int type, const std::string &message)
 Process an error message (doing the real work) Mehr ...
 
const std::string & mutabor::Device::GetName () const
 
virtual void mutabor::Device::SetName (const std::string &s)
 
size_t mutabor::Device::get_session_id () const
 
int mutabor::Device::get_routefile_id () const
 
virtual std::string mutabor::Device::GetTypeName () const
 
virtual bool mutabor::Device::Open ()=0
 
virtual void mutabor::Device::Close ()=0
 
bool mutabor::Device::IsDirty () const
 
void mutabor::Device::Dirty (bool d=true)
 
bool mutabor::Device::IsOpen () const
 
virtual mutabor::Device::operator std::string () const
 
 mutabor::Device::Device (const std::string &name="", int id=-1)
 
virtual void mutabor::Device::setUserData (void *data)
 
virtual void * mutabor::Device::getUserData () const
 
void mutabor::Device::set_routefile_id (int id)
 
 mutabor::CommonTypedDeviceAPI< T, P, L >::CommonTypedDeviceAPI ()
 
 mutabor::CommonTypedDeviceAPI< T, P, L >::CommonTypedDeviceAPI (const std::string &name, int id=-1)
 
virtual mutabor::CommonTypedDeviceAPI< T, P, L >::~CommonTypedDeviceAPI ()
 
virtual void mutabor::CommonTypedDeviceAPI< T, P, L >::Destroy ()
 Destroy the current object. Mehr ...
 
virtual void mutabor::CommonTypedDeviceAPI< T, P, L >::DisconnectFromAll ()
 Disconnect the device from all pairings with routes GUI data or something else. Mehr ...
 
virtual void mutabor::CommonTypedDeviceAPI< T, P, L >::Add (Route &route)
 add a route Mehr ...
 
virtual bool mutabor::CommonTypedDeviceAPI< T, P, L >::Replace (Route &oldroute, Route &newroute)
 replace a route Mehr ...
 
virtual bool mutabor::CommonTypedDeviceAPI< T, P, L >::Remove (Route &route)
 remove a route Mehr ...
 
virtual bool mutabor::CommonTypedDeviceAPI< T, P, L >::MoveRoutes (DevicePtr &newclass)
 Move routes to another device. Mehr ...
 
size_t mutabor::CommonTypedDeviceAPI< T, P, L >::nRoutes ()
 
const routeListType & mutabor::CommonTypedDeviceAPI< T, P, L >::GetRoutes () const
 
routeListType & mutabor::CommonTypedDeviceAPI< T, P, L >::GetRoutes ()
 
static const listtype & mutabor::CommonTypedDeviceAPI< T, P, L >::GetDeviceList ()
 
static void mutabor::CommonTypedDeviceAPI< T, P, L >::InitializeIds ()
 Initialize the internal device identifiers. Mehr ...
 
static DevicePtr mutabor::CommonTypedDeviceAPI< T, P, L >::GetDevice (int id, devidtype kind)
 Scan the list of input devices for a given id. Mehr ...
 
 mutabor::CommonTypedDeviceAPI< T, P, L >::operator const thistype & () const
 
 mutabor::CommonTypedDeviceAPI< T, P, L >::operator thistype & ()
 
thistype * mutabor::CommonTypedDeviceAPI< T, P, L >::thisptr ()
 
const thistype * mutabor::CommonTypedDeviceAPI< T, P, L >::thisptr () const
 
virtual int mutabor::CommonTypedDeviceAPI< T, P, L >::MoveInList (int count)
 Move the device in the device list. Mehr ...
 
static void mutabor::CommonTypedDeviceAPI< T, P, L >::ClearDeviceList ()
 
virtual mutabor::CommonTypedDeviceAPI< T, P, L >::operator std::string () const
 
static void mutabor::CommonTypedDeviceAPI< T, P, L >::AppendToDeviceList (DevicePtr dev)
 
static void mutabor::CommonTypedDeviceAPI< T, P, L >::RemoveFromDeviceList (DevicePtr dev)
 
static listtype::iterator mutabor::CommonTypedDeviceAPI< T, P, L >::FindInDeviceList (DevicePtr dev)
 
static bool mutabor::CommonTypedDeviceAPI< T, P, L >::IsInDeviceList (const DevicePtr dev)
 
static void mutabor::CommonTypedDeviceAPI< T, P, L >::TruncateDeviceList (DevicePtr dev)
 
virtual mutabor::OutputDeviceClass::~OutputDeviceClass ()
 
void mutabor::OutputDeviceClass::NoteOn (Box box, int taste, int velo, RouteClass *r, size_t id, const ChannelData &input_channel_data)
 
void mutabor::OutputDeviceClass::NoteOff (Box box, int taste, int velo, RouteClass *r, size_t id, bool is_note_on)
 
void mutabor::OutputDeviceClass::UpdateTones (RouteClass *route)
 
void mutabor::OutputDeviceClass::Controller (int mutabor_channel, int controller, int value, size_t id)
 
int mutabor::OutputDeviceClass::GetChannel (int inkey, size_t channel, size_t id)
 
void mutabor::OutputDeviceClass::Gis (GisToken *token, char turn)
 
void mutabor::OutputDeviceClass::AddTime (frac time)
 
void mutabor::OutputDeviceClass::MidiOut (mutabor::Box box, midi_string data)
 
void mutabor::OutputDeviceClass::MidiOut (uint8_t *p, size_t n)
 
void mutabor::OutputDeviceClass::handle_event (event e)
 
static void mutabor::OutputDeviceClass::all_handle_event (event e)
 
void mutabor::OutputDeviceClass::Quiet (Route r, int type)
 
void mutabor::OutputDeviceClass::Quiet (Route r, int type, size_t id)
 
void mutabor::OutputDeviceClass::Panic (int type)
 reset the device if requested Mehr ...
 
bool mutabor::OutputDeviceClass::Open ()
 
virtual bool mutabor::OutputDeviceClass::NeedsRealTime ()
 
virtual DevType mutabor::OutputDeviceClass::GetType () const
 
virtual std::string mutabor::OutputDeviceClass::GetTypeName () const
 
virtual mutabor::OutputDeviceClass::operator std::string () const
 
 mutabor::OutputDeviceClass::OutputDeviceClass ()
 
 mutabor::OutputDeviceClass::OutputDeviceClass (const std::string &name, int id=-1)
 
virtual void mutabor::OutputDeviceClass::do_NoteOn (Box box, int taste, int velo, RouteClass *r, size_t id, const ChannelData &input_channel_data)=0
 Really Send the beginning of a sounding note. Mehr ...
 
virtual void mutabor::OutputDeviceClass::do_NoteOff (Box box, int taste, int velo, RouteClass *r, size_t id, bool is_note_on)=0
 
virtual void mutabor::OutputDeviceClass::do_UpdateTones (RouteClass *route)=0
 
virtual void mutabor::OutputDeviceClass::do_Controller (int mutabor_channel, int controller, int value, size_t id)=0
 
virtual int mutabor::OutputDeviceClass::do_GetChannel (int inkey, size_t channel, size_t id)=0
 
virtual void mutabor::OutputDeviceClass::do_Gis (GisToken *token, char turn)=0
 
virtual void mutabor::OutputDeviceClass::do_AddTime (frac time)=0
 
virtual void mutabor::OutputDeviceClass::do_MidiOut (mutabor::Box box, midi_string data)=0
 
virtual void mutabor::OutputDeviceClass::do_MidiOut (uint8_t *p, size_t n)=0
 
virtual void mutabor::OutputDeviceClass::do_handle_event (event e)=0
 
virtual void mutabor::OutputDeviceClass::do_Quiet (Route r, int type)=0
 
virtual void mutabor::OutputDeviceClass::do_Quiet (Route r, int type, size_t id)=0
 
virtual void mutabor::OutputDeviceClass::do_Panic (int type)
 
virtual bool mutabor::OutputDeviceClass::do_Open ()
 
 mutabor::InputDeviceClass::current_keys_type::entry::entry (int k, int u, int v, Route &R, InputDevice i, const ChannelData *c, void *d)
 
bool mutabor::InputDeviceClass::current_keys_type::entry::operator== (const entry &e) const
 
uint8_t mutabor::InputDeviceClass::current_keys_type::hash_type::operator() (const entry &val) const
 
void mutabor::InputDeviceClass::current_keys_type::add (int key, int velocity, int unique_id, Route &R, InputDevice i, const ChannelData &c, void *userdata)
 
void mutabor::InputDeviceClass::current_keys_type::add (entry e)
 
void mutabor::InputDeviceClass::current_keys_type::remove (int key, int velocity, int unique_id, Route &R)
 
void mutabor::InputDeviceClass::current_keys_type::remove (iterator i)
 
void mutabor::InputDeviceClass::current_keys_type::clear ()
 
void mutabor::InputDeviceClass::current_keys_type::rehash (size_t n)
 
iterator mutabor::InputDeviceClass::current_keys_type::begin ()
 
const_iterator mutabor::InputDeviceClass::current_keys_type::begin () const
 
iterator mutabor::InputDeviceClass::current_keys_type::end ()
 
const_iterator mutabor::InputDeviceClass::current_keys_type::end () const
 
virtual mutabor::InputDeviceClass::~InputDeviceClass ()
 
virtual void mutabor::InputDeviceClass::Close ()
 
virtual void mutabor::InputDeviceClass::Stop ()
 Stop playback or recording of the device. Mehr ...
 
virtual void mutabor::InputDeviceClass::Play ()
 Command the device to play music. Mehr ...
 
static bool mutabor::InputDeviceClass::BatchPlay ()
 Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex route environment. Mehr ...
 
static void mutabor::InputDeviceClass::RealtimePlay ()
 Play all input devices in realtime mode The the realtime mode allows interactive playing together with the integrated sequencer. Mehr ...
 
static void mutabor::InputDeviceClass::StopAll ()
 Stop all inupt devices. Mehr ...
 
static void mutabor::InputDeviceClass::PauseAll ()
 Pause all input devices. Mehr ...
 
static bool mutabor::InputDeviceClass::was_last_stop ()
 
virtual wxThread::ExitCode mutabor::InputDeviceClass::WaitForDeviceFinish (wxThreadWait flags=wxTHREAD_WAIT_BLOCK)
 Wait for the thread started with Play(). Mehr ...
 
virtual void mutabor::InputDeviceClass::Pause ()
 Pause playback or recording of the device. Mehr ...
 
virtual bool mutabor::InputDeviceClass::NeedsRealTime ()
 
virtual mutint64 mutabor::InputDeviceClass::PrepareNextEvent ()
 Go on to the next event. Mehr ...
 
virtual DevType mutabor::InputDeviceClass::GetType () const
 
virtual std::string mutabor::InputDeviceClass::GetTypeName () const
 
static mutint64 mutabor::InputDeviceClass::GetNO_DELTA ()
 
bool mutabor::InputDeviceClass::IsDelta (mutint64 d)
 
virtual mutabor::InputDeviceClass::operator std::string () const
 
void mutabor::InputDeviceClass::NoteOn (Route &R, int key, int velocity, size_t make_unique, const ChannelData &input_channel_data, void *userdata)
 
void mutabor::InputDeviceClass::NoteOff (Route &R, int key, int velocity, size_t make_unique)
 
void mutabor::InputDeviceClass::DoNoteOff (Route &R, int key, int velocity, size_t make_unique)
 
void mutabor::InputDeviceClass::SilenceKeys (bool remove)
 
void mutabor::InputDeviceClass::DoSilenceKeys (bool remove)
 
void mutabor::InputDeviceClass::ResumeKeys ()
 
void mutabor::InputDeviceClass::Panic (int type)
 reset the device if requested Mehr ...
 
void mutabor::InputDeviceClass::Panic (int type, size_t unique_id)
 
virtual ChannelData & mutabor::InputDeviceClass::GetChannelData (const current_keys_type::entry &key) const =0
 
 mutabor::InputDeviceClass::InputDeviceClass (const std::string &name="", mutabor::MutaborModeType m=DeviceStop, int id=-1)
 
void mutabor::InputDeviceClass::outputs_handle_event (event e)
 
 mutabor::DeviceFactory::FactoryNotFound::FactoryNotFound (int i)
 
virtual mutabor::DeviceFactory::FactoryNotFound::~FactoryNotFound () throw ()
 
virtual const char * mutabor::DeviceFactory::FactoryNotFound::what (void) const throw ()
 Returns the thrown error message as a c-style string. Mehr ...
 
 mutabor::DeviceFactory::DeviceFactory (size_t id=0)
 
virtual mutabor::DeviceFactory::~DeviceFactory ()
 
static OutputDevice mutabor::DeviceFactory::CreateOutput (int type, const std::string &name="", MutaborModeType mode=DeviceStop, int id=-1)
 
static InputDevice mutabor::DeviceFactory::CreateInput (int type, const std::string &name="", MutaborModeType mode=DeviceStop, int id=-1)
 
template<class T >
static T mutabor::DeviceFactory::Create (int type, const std::string &name="", MutaborModeType mode=DeviceStop, int id=-1)
 
static void mutabor::DeviceFactory::Destroy ()
 
static void mutabor::DeviceFactory::LoadOutputDevices (tree_storage &config)
 load the routes from a tree based configuration Mehr ...
 
static void mutabor::DeviceFactory::SaveOutputDevices (tree_storage &config)
 write the routes to the configuration Mehr ...
 
static void mutabor::DeviceFactory::LoadInputDevices (tree_storage &config)
 load the routes from a tree based configuration Mehr ...
 
static void mutabor::DeviceFactory::SaveInputDevices (tree_storage &config)
 write the routes to the configuration Mehr ...
 
virtual size_t mutabor::DeviceFactory::GetType () const =0
 
virtual OutputDeviceClass * mutabor::DeviceFactory::DoCreateOutput (const std::string &name, int id=-1) const =0
 
virtual InputDeviceClass * mutabor::DeviceFactory::DoCreateInput (const std::string &name, MutaborModeType mode, int id=-1) const =0
 
virtual void mutabor::DeviceFactory::DoLoadOutputDevices (tree_storage &config) const
 load the routes from a tree based configuration Mehr ...
 
virtual void mutabor::DeviceFactory::DoSaveOutputDevices (tree_storage &config) const
 write the routes to the configuration Mehr ...
 
virtual void mutabor::DeviceFactory::DoLoadInputDevices (tree_storage &config) const
 load the routes from a tree based configuration Mehr ...
 
virtual void mutabor::DeviceFactory::DoSaveInputDevices (tree_storage &config) const
 write the routes to the configuration Mehr ...
 
void mutabor::InitDeviceFactories ()
 
 mutabor::ScopedInputDevice::~ScopedInputDevice ()
 
ScopedInputDevice & mutabor::ScopedInputDevice::operator= (InputDeviceClass *rhs)
 
ScopedInputDevice & mutabor::ScopedInputDevice::operator= (const InputDevice &rhs)
 
 mutabor::ScopedOutputDevice::~ScopedOutputDevice ()
 
ScopedOutputDevice & mutabor::ScopedOutputDevice::operator= (OutputDeviceClass *rhs)
 
ScopedOutputDevice & mutabor::ScopedOutputDevice::operator= (const OutputDevice &rhs)
 
bool mutabor::OutOpen ()
 
void mutabor::OutClose ()
 
void mutabor::OutAddTime (frac time)
 
bool mutabor::InOpen ()
 
void mutabor::InClose ()
 
bool mutabor::NeedsRealTime ()
 
int Name2Key (const std::string name)
 
int Acc2Int (const std::string &acc)
 
void Clear (std::string *s)
 
int BuildTag ()
 
int StartSep ()
 
int BeginSegment ()
 
int EndSegment ()
 
int BeginSequenz ()
 
int EndSequenz ()
 
int BeginParameter ()
 
int EndParameter ()
 
int BeginRange ()
 
int EndRange ()
 
int NextSequenz ()
 
int Note (const std::string &name, const std::string &accedentials, int octave, const mutabor::frac &duration)
 
int Tag (const std::string &tagName)
 
int TagParaInt (long i)
 
int TagParaReal (double x)
 
int TagParaStr (const std::string &s)
 
int Comma ()
 
void UnRavel ()
 
GisType GetGisType (GisToken *token)
 
int GetTagId (const std::string &name, std::string &registered)
 
GisTokenCopyPara (GisToken *para)
 
GisTokenGisParse (const std::string FileName)
 
std::string GISPrettyPrint (std::string s)
 
double GetReal (GisToken *token)
 
char GetMidiInstrument (GisToken *token)
 
mutint64 GetTheSpeedFactor (GisToken *token)
 This function returns the speed factor that must be multiplied to the duration value in order to get a delta timestamp in μs. Mehr ...
 
frac GisReadHeadOn (GisReadHead **Head, frac dTime, GisReadProceed *proceed)
 
TagListCopy (TagList *list)
 
void Erase (TagList *list)
 
TagListRemoveTag (TagList **list)
 
TagListAddTag (TagList **list, GisTag *tag)
 
TagListEndTag (TagList **list, GisTagEnd *tagEnd)
 
void GisReadArtDummy (GisReadArtHead *, char)
 
frac GisReadArtHeadOn (GisReadArtHead **Head, frac dTime, GisReadArtProceed *proceed)
 
int StrCmp (const std::string &s1, const std::string &s2)
 
int CmpNote (GisToken *note1, GisToken *note2)
 
GisWriteHeadGetMatchingHeader (GisWriteHead **head, const std::string id)
 
int GisWriteHeadGis (GisWriteHead **head, std::string id, GisToken *token, char turn)
 
void CloseAllSubs (GisWriteHead *head)
 
size_t SepPos ()
 
void AddStr (std::string &Target, int Pos, const std::string &Source)
 
int CharIn (char c, const char *s)
 
int IsLetter (char c)
 
int DoError (int nr, int pos=-1)
 
int CheckError (int nr)
 
void SavePos ()
 
std::string & takesep ()
 
int GetSep ()
 
long ReadLong (int SignAllowed)
 
int ReadParaNumber ()
 
int ReadParaStr ()
 
int ReadTag ()
 
int ReadNote ()
 
int DoParse ()
 
int GspParse (const std::string &FileName)
 
int OpenFile (const std::string &Name)
 
int CloseFile ()
 
int ReadNewLine ()
 
std::string StreamToHex (std::istream &buf)
 
 mutabor::TRouteClass< I, O, B >::NoOutputDevice::NoOutputDevice (const thistype *r)
 
virtual mutabor::TRouteClass< I, O, B >::NoOutputDevice::~NoOutputDevice () throw ()
 
 mutabor::TRouteClass< I, O, B >::NoInputDevice::NoInputDevice (const thistype *r)
 
virtual mutabor::TRouteClass< I, O, B >::~TRouteClass ()
 
virtual void mutabor::TRouteClass< I, O, B >::Save (tree_storage &config)
 Write the route settings into a tree based configuration. Mehr ...
 
virtual void mutabor::TRouteClass< I, O, B >::Load (tree_storage &config)
 Read the route into from a tree based configuration. Mehr ...
 
char mutabor::TRouteClass< I, O, B >::Check (int i)
 
const OutputDevice & mutabor::TRouteClass< I, O, B >::GetOutputDevice () const
 
const InputDevice & mutabor::TRouteClass< I, O, B >::GetInputDevice () const
 
void mutabor::TRouteClass< I, O, B >::NoteOn (int key, int velocity, size_t make_unique, const ChannelData &input_channel_data, void *userdata)
 
void mutabor::TRouteClass< I, O, B >::NoteOff (int key, int velocity, size_t make_unique)
 
void mutabor::TRouteClass< I, O, B >::MidiAnalysis (const std::vector< unsigned char > *midiCode)
 
void mutabor::TRouteClass< I, O, B >::MidiOut (midi_string &data)
 
void mutabor::TRouteClass< I, O, B >::UpdateTones ()
 
void mutabor::TRouteClass< I, O, B >::handle_event (event e)
 
int mutabor::TRouteClass< I, O, B >::GetChannel (int key, size_t channel, size_t id)
 
void mutabor::TRouteClass< I, O, B >::Panic (int type)
 
void mutabor::TRouteClass< I, O, B >::Panic (int type, size_t unique_id)
 
void mutabor::TRouteClass< I, O, B >::Controller (int controller, int value, size_t make_unique)
 
virtual void mutabor::TRouteClass< I, O, B >::Add (OutputDevice &out)
 add a new output device Mehr ...
 
virtual void mutabor::TRouteClass< I, O, B >::Add (InputDevice &in)
 add a new input device Mehr ...
 
virtual void mutabor::TRouteClass< I, O, B >::Add (Box &b)
 add a new box Mehr ...
 
virtual bool mutabor::TRouteClass< I, O, B >::Replace (OutputDevice &olddev, OutputDevice &newdev)
 replace an existing output device Mehr ...
 
virtual bool mutabor::TRouteClass< I, O, B >::Replace (InputDevice &olddev, InputDevice &newdev)
 replace an existing input device Mehr ...
 
virtual bool mutabor::TRouteClass< I, O, B >::Replace (Box &oldbox, Box &newbox)
 replace an existing box Mehr ...
 
virtual bool mutabor::TRouteClass< I, O, B >::Remove (OutputDevice &out)
 remove an existing output device Mehr ...
 
virtual bool mutabor::TRouteClass< I, O, B >::Remove (InputDevice &in)
 remove an existing input device Mehr ...
 
virtual bool mutabor::TRouteClass< I, O, B >::Remove (Box &b)
 remov an existing box Mehr ...
 
void mutabor::TRouteClass< I, O, B >::SetDeviceId (int Id, I)
 
void mutabor::TRouteClass< I, O, B >::SetDeviceId (int Id, O)
 
void mutabor::TRouteClass< I, O, B >::SetBoxId (int Id)
 
int mutabor::TRouteClass< I, O, B >::GetDeviceId (I)
 
int mutabor::TRouteClass< I, O, B >::GetDeviceId (O)
 
int mutabor::TRouteClass< I, O, B >::GetBoxId ()
 
bool mutabor::TRouteClass< I, O, B >::GetActive () const
 
void mutabor::TRouteClass< I, O, B >::SetActive (bool active)
 
Box mutabor::TRouteClass< I, O, B >::GetBox () const
 
virtual void mutabor::TRouteClass< I, O, B >::SetBox (Box b)
 
RouteType mutabor::TRouteClass< I, O, B >::GetType () const
 
void mutabor::TRouteClass< I, O, B >::SetType (RouteType type)
 
const std::string & mutabor::TRouteClass< I, O, B >::GetTypeName ()
 
int mutabor::TRouteClass< I, O, B >::GetInputFrom () const
 
void mutabor::TRouteClass< I, O, B >::SetInputFrom (int i)
 
int mutabor::TRouteClass< I, O, B >::GetOutputFrom () const
 
void mutabor::TRouteClass< I, O, B >::SetOutputFrom (int o)
 
int mutabor::TRouteClass< I, O, B >::GetInputTo () const
 
void mutabor::TRouteClass< I, O, B >::SetInputTo (int i)
 
int mutabor::TRouteClass< I, O, B >::GetOutputTo () const
 
void mutabor::TRouteClass< I, O, B >::SetOutputTo (int o)
 
bool mutabor::TRouteClass< I, O, B >::OutputAvoidDrumChannel () const
 
void mutabor::TRouteClass< I, O, B >::OutputAvoidDrumChannel (bool avoid)
 
int mutabor::TRouteClass< I, O, B >::get_routefile_id () const
 
size_t mutabor::TRouteClass< I, O, B >::get_session_id () const
 
static const routeListType & mutabor::TRouteClass< I, O, B >::GetRouteList ()
 
virtual void mutabor::TRouteClass< I, O, B >::Destroy ()
 Remove from Route list to be deleted, when it becomes free. Mehr ...
 
static void mutabor::TRouteClass< I, O, B >::InitializeIds ()
 Initialize the internal device identifiers. Mehr ...
 
static void mutabor::TRouteClass< I, O, B >::SaveRoutes (tree_storage &config)
 Save the current routes in a tree storage. Mehr ...
 
static void mutabor::TRouteClass< I, O, B >::LoadRoutes (tree_storage &config)
 Load the current routes from a tree storage. Mehr ...
 
static void mutabor::TRouteClass< I, O, B >::ClearRouteList ()
 
virtual mutabor::TRouteClass< I, O, B >::operator std::string () const
 
 mutabor::TRouteClass< I, O, B >::WATCHEDPTR (void, routing, TRouteClass) userdata
 
 mutabor::TRouteClass< I, O, B >::TRouteClass ()
 
 mutabor::TRouteClass< I, O, B >::TRouteClass (InputDevice &in, OutputDevice &out, RouteType type=RTall, int iFrom=-1, int iTo=-1, Box &box=NULL, bool active=false, int oFrom=-1, int oTo=-1, bool oNoDrum=true)
 
void mutabor::TRouteClass< I, O, B >::Create (InputDevice &in, OutputDevice &out, RouteType type=RTall, int iFrom=-1, int iTo=-1, Box box=NULL, bool active=false, int oFrom=-1, int oTo=-1, bool oNoDrum=true)
 
virtual void mutabor::TRouteClass< I, O, B >::setUserData (void *data)
 
virtual void * mutabor::TRouteClass< I, O, B >::getUserData () const
 
static void mutabor::TRouteClass< I, O, B >::AppendToRouteList (Route route)
 
static void mutabor::TRouteClass< I, O, B >::RemoveFromRouteList (Route route)
 
Route mutabor::FindRoute (size_t id)
 
 mutabor::RouteFactory::FactoryAlreadySet::FactoryAlreadySet (RouteFactory *o, RouteFactory *n)
 
 mutabor::RouteFactory::RouteFactoryNotSet::RouteFactoryNotSet ()
 
 mutabor::RouteFactory::RouteFactory ()
 Creates a route Factory. Mehr ...
 
static Route mutabor::RouteFactory::Create ()
 Creates a generic route. Mehr ...
 
static Route mutabor::RouteFactory::Create (InputDevice &in, OutputDevice &out, RouteType type=RTall, int iFrom=-1, int iTo=-1, Box box=NULL, bool active=false, int oFrom=-1, int oTo=-1, bool oNoDrum=true)
 Creates a preconfigured route according to the given type. Mehr ...
 
static void mutabor::RouteFactory::Destroy ()
 Destroy the route factory. Mehr ...
 
static void mutabor::RouteFactory::LoadRoutes (tree_storage &config)
 load the routes from a tree based configuration Mehr ...
 
static void mutabor::RouteFactory::SaveRoutes (tree_storage &config)
 write the routes to the configuration Mehr ...
 
virtual mutabor::RouteFactory::~RouteFactory ()
 Destructor. Mehr ...
 
virtual RouteClass * mutabor::RouteFactory::DoCreate () const __attribute__((malloc))
 Creates a generic route. Mehr ...
 
virtual RouteClass * mutabor::RouteFactory::DoCreate (InputDevice &in, OutputDevice &out, RouteType type, int iFrom, int iTo, Box box, bool active, int oFrom, int oTo, bool oNoDrum) const __attribute__((malloc))
 Creates a preconfigured route. Mehr ...
 
virtual void mutabor::RouteFactory::DoLoadRoutes (tree_storage &config) const
 load the routes from a tree based configuration Mehr ...
 
virtual void mutabor::RouteFactory::DoSaveRoutes (tree_storage &config) const
 write the routes to the configuration Mehr ...
 
 mutabor::ScopedRoute::~ScopedRoute ()
 
ScopedRoute & mutabor::ScopedRoute::operator= (element_type *rhs)
 
ScopedRoute & mutabor::ScopedRoute::operator= (const Route &rhs)
 
 compat30::RouteIOError::RouteIOError (const std::string &what_arg)
 
void compat30::LoadRoutes (const std::string &)
 load the routes from a text string Mehr ...
 
void compat30::SaveRoutes (std::string &)
 write the routes to the given string Mehr ...
 
template<>
InputDevice mutabor::DeviceFactory::Create (int type, const std::string &name, MutaborModeType mode, int id)
 
GisType GisTag::GetParaType (int nr)
 
GisTokenGisTag::GetPara (int nr)
 
 GisNote::GisNote (int key, int octave, int acc, const std::string &sep="", GisToken *next=0)
 
int GisNote::GetKey ()
 
GisReadHeadGisReadHead::InsertInfrontOf (GisReadHead *position)
 
GisReadHeadGisReadHead::CutOut ()
 
void GisReadHead::CreateSegmentSubs ()
 
void GisReadHead::CreateSequenzSubs ()
 
void GisReadHead::Read ()
 
virtual std::string GisReadHead::ToString ()
 
void GisReadArtHead::Read ()
 
virtual std::string GisReadArtHead::ToString ()
 
 ChordNote::ChordNote (ChordNote *first)
 
void ChordNote::CountOnTime (mutabor::frac dTime)
 
void ChordNote::SetNoteOn (GisToken *note)
 
int ChordNote::SetNoteOff (GisToken *note)
 
void ChordNote::AddGis (GisToken *token)
 
void ChordNote::CheckCloseAlter ()
 
void ChordNote::CheckCloseTie ()
 
int ChordNote::MutNoteOn (int key, double pitch, int instrId, int taste, std::string sep)
 
int ChordNote::MutNoteOff ()
 
GisWriteHeadGisWriteHead::InsertAfter (GisWriteHead *position)
 
GisWriteHeadGisWriteHead::CutOut ()
 
ChordNoteGisWriteHead::GetFreeNote ()
 
ChordNoteGisWriteHead::GetNote (int instrId, int taste)
 
int GisWriteHead::ReadyForBoss ()
 
void GisWriteHead::RemoveComma ()
 
int GisWriteHead::CloseSubs (GisToken **cont=0)
 
int GisWriteHead::CloseCurrentToken (char insertRest=1)
 
int GisWriteHead::ProceedGis (GisToken *token, char turn=0)
 
void GisWriteHead::WriteChord ()
 
void GisWriteHead::AddTime (mutabor::frac dTime)
 
void InputMidiFileTest::testBatchPlay1 ()
 
void InputMidiFileTest::testBug019010_2 ()
 
void InputMidiFileTest::testBug019010 ()
 
void InputMidiFileTest::testBankSelect ()
 
void InputMidiFileTest::testAllControllerOff ()
 
void InputMidiFileTest::testRpnNrpn ()
 
void InputMidiFileTest::testControllerPlay ()
 
bool OutputMidiFileTest::CheckOut (std::string s, int line, const char *file)
 
void OutputMidiFileTest::setUp ()
 
void OutputMidiFileTest::tearDown ()
 
void OutputMidiFileTest::testNoteOnOff ()
 
void OutputMidiFileTest::testBatchPlay1 ()
 
void InputMidiFileTest::testBoxMidiIn ()
 
void InputMidiFileTest::testAfterTouch ()
 
void InputMidiFileTest::testSysEx ()
 
void CommonMidiOutputTest::setUp ()
 
void CommonMidiOutputTest::tearDown ()
 
void CommonMidiOutputTest::testNoteOnOff ()
 
void CommonMidiOutputTest::testMoreNotesThanChannels ()
 
void CommonMidiInputTest::setUp ()
 
void CommonMidiInputTest::tearDown ()
 
void CommonMidiInputTest::testPanic ()
 
void CommonMidiInputTest::testGlobalPanic ()
 

Variablen

Box mutabor::BoxClass::ChangedCallback::box
 
enum
mutabor::BoxClass::logic_entry:: { ... }  
mutabor::BoxClass::logic_entry::flags
 
bool mutabor::BoxClass::logic_entry::active
 
std::string mutabor::BoxClass::logic_entry::name
 
std::string mutabor::BoxClass::logic_entry::startTuning
 
int mutabor::BoxClass::logic_entry::key
 
struct any_trigger mutabor::BoxClass::logic_entry::trigger
 
double mutabor::BoxClass::tone_entry::pitch
 
enum
mutabor::BoxClass::tone_entry:: { ... }  
mutabor::BoxClass::tone_entry::flag
 
int mutabor::BoxClass::tone_system::anchor
 
double mutabor::BoxClass::tone_system::period
 
tone_list mutabor::BoxClass::tone_system::tones
 
int mutabor::BoxClass::current_tone_entry::index
 
size_t mutabor::BoxClass::current_tone_entry::id
 
int mutabor::BoxClass::current_tone_entry::channel
 
Box mutabor::BoxClass::BoxLock::box
 
static listtype mutabor::BoxClass::boxList
 
static int mutabor::BoxClass::nextboxid = Box0
 
struct mutabor_box_type * mutabor::BoxClass::box
 
idtype< BoxClass > mutabor::BoxClass::session_id
 
int mutabor::BoxClass::routefile_id
 
routeListType mutabor::BoxClass::routes
 
bool mutabor::BoxClass::open
 
std::string mutabor::BoxClass::current_logic
 
std::string mutabor::BoxClass::current_tonesystem
 
int mutabor::BoxClass::current_key_tonesystem
 
int mutabor::BoxClass::current_key_logic
 
unsigned int mutabor::BoxClass::updateflags
 
std::list< ChangedCallback * > mutabor::BoxClass::callbacks
 
BoxClass * mutabor::BoxClass::set_callback::box
 
CompileCallback * mutabor::BoxClass::current_compile_callback
 
static
mutabor::hidden::mutabor_callback_type 
mutabor::BoxClass::backend_callbacks
 
Mutex mutabor::BoxClass::mutex
 
int mutabor::BoxClass::logic_timing
 
Mutex mutabor::BoxClass::logic_timing_mutex
 
mutint64 mutabor::BoxClass::loop_timeout
 
watchdog< Box > * mutabor::BoxClass::loopguard
 
 mutabor::BoxClass::REFPTR_INTERFACE
 
int mutabor::BoxFactory::FactoryNotFound::id
 
std::string mutabor::BoxFactory::FactoryNotFound::message_
 
static factorylist mutabor::BoxFactory::factories
 
char mutabor::InDevChanged
 
static const size_t mutabor::ChannelData::IGNORE_UNIQUE_ID = ULONG_MAX
 
controller_vector mutabor::ChannelData::controller
 
controller_vector mutabor::ChannelData::controller_changed
 
size_t mutabor::ChannelData::first_unchanged
 
bool mutabor::ChannelData::looped
 
bool mutabor::ChannelData::data_is_rpn
 
int mutabor::ChannelData::Sound
 
uint8_t mutabor::ChannelData::bank_coarse
 
uint8_t mutabor::ChannelData::bank_fine
 
int mutabor::ChannelData::bend
 
idtype< Device > mutabor::Device::session_id
 Id used during runtime;. Mehr ...
 
int mutabor::Device::routefile_id
 
std::string mutabor::Device::Name
 
bool mutabor::Device::dirty:1
 
bool mutabor::Device::isOpen:1
 
enum MutaborModeType mutabor::Device::Mode
 
routeListType mutabor::Device::routes
 
void * mutabor::Device::userdata
 
 mutabor::CommonTypedDeviceAPI< T, P, L >::REFPTR_INTERFACE
 
static listtype mutabor::CommonTypedDeviceAPI< T, P, L >::deviceList
 
Mutex mutabor::OutputDeviceClass::write_lock
 
int mutabor::InputDeviceClass::current_keys_type::entry::key
 
size_t mutabor::InputDeviceClass::current_keys_type::entry::unique_id
 
int mutabor::InputDeviceClass::current_keys_type::entry::velocity
 
Route mutabor::InputDeviceClass::current_keys_type::entry::route
 
InputDevice mutabor::InputDeviceClass::current_keys_type::entry::device
 
const ChannelData * mutabor::InputDeviceClass::current_keys_type::entry::settings
 
void * mutabor::InputDeviceClass::current_keys_type::entry::userdata
 
map_type mutabor::InputDeviceClass::current_keys_type::map
 
current_keys_type mutabor::InputDeviceClass::current_keys
 
Mutex mutabor::InputDeviceClass::write_lock
 
static bool mutabor::InputDeviceClass::last_was_stop = true
 
int mutabor::DeviceFactory::FactoryNotFound::id
 
std::string mutabor::DeviceFactory::FactoryNotFound::message_
 
static factorylist mutabor::DeviceFactory::factories
 
const char * Tags [NTAGS]
 
const char * TagShorts [NTAGSHORTS]
 
GisTokenRoot
 
GisToken ** Current
 
GisTokenLastOpenBracket
 
GisTagBeginLastOpenRange
 
char TagMode
 
std::string TagName
 
std::string TagSep
 
GisTokenPara
 
GisTokenLastPara
 
int LastOctave
 
mutabor::frac LastDuration
 
int debugcount = 0
 
const char * Tags [NTAGS]
 
const char * TagShorts [NTAGSHORTS]
 
char ArticulationHold [5] = { 80, 100, 90, 90, 60 }
 
char ArticulationOff [5] = { 80, 80, 60, 127, 127 }
 
GisReadProceed GisReadDummy
 
GisReadArtProceed GisReadArtDummy
 
int GspCurrentLineNr
 
int GspErrorLineNr
 
int GspErrorPos
 
std::string GspErrorLine
 
int GspError
 
int PossibleErrorLineNr
 
int PossibleErrorPos
 
std::string PossibleErrorLine
 
std::string Sep = ""
 
char ParaMode
 
char Komma
 
int NumberLength
 
std::string Brackets = ""
 
char LastTag
 
static int octave
 
static std::string accedentials
 
static frac duration
 
char SepChars [] = " \t\r\n"
 
char DelimitChars [] = "{}[]()"
 
bool minus
 
int GspCurrentLineNr
 
int GspErrorLineNr
 
int GspErrorPos
 
std::string GspErrorLine
 
int GspError
 
std::string Sep
 
const char * GspErrorText []
 
const char * GspErrorText []
 
std::string CurrentLine
 
size_t CurrentPos
 
int Eof
 
boost::filesystem::ifstream * File
 
static int bad = 0
 
std::string CurrentLine
 
size_t CurrentPos
 
int Eof
 
const std::string mutabor::RTName []
 
const std::string mutabor::DevTypeName []
 
Route mutabor::TRouteClass< I, O, B >::NoOutputDevice::route
 
Route mutabor::TRouteClass< I, O, B >::NoInputDevice::route
 
OutputDevice mutabor::TRouteClass< I, O, B >::Out
 
InputDevice mutabor::TRouteClass< I, O, B >::In
 
Box mutabor::TRouteClass< I, O, B >::box
 
static routeListType mutabor::TRouteClass< I, O, B >::routeList
 
idtype< TRouteClass< I, O > > mutabor::TRouteClass< I, O, B >::session_id
 
int mutabor::TRouteClass< I, O, B >::routefile_id
 
int mutabor::TRouteClass< I, O, B >::inputid
 
int mutabor::TRouteClass< I, O, B >::outputid
 
int mutabor::TRouteClass< I, O, B >::boxid
 
RouteType mutabor::TRouteClass< I, O, B >::Type
 
int mutabor::TRouteClass< I, O, B >::IFrom
 
int mutabor::TRouteClass< I, O, B >::ITo
 
bool mutabor::TRouteClass< I, O, B >::Active
 
int mutabor::TRouteClass< I, O, B >::OFrom
 
int mutabor::TRouteClass< I, O, B >::OTo
 
bool mutabor::TRouteClass< I, O, B >::ONoDrum
 
 mutabor::TRouteClass< I, O, B >::REFPTR_INTERFACE
 
RouteFactory * mutabor::RouteFactory::FactoryAlreadySet::old
 
RouteFactory * mutabor::RouteFactory::FactoryAlreadySet::created
 
static RouteFactory * mutabor::RouteFactory::factory
 Pointer to the current factory. Mehr ...
 

Freundbeziehungen

class mutabor::BoxClass::::mutaborGUI::BoxData
 
class mutabor::BoxClass::BoxFactory
 
class mutabor::Device::::mutaborGUI::GUIOutputDeviceBase
 
class mutabor::Device::::mutaborGUI::GUIInputDeviceBase
 
class mutabor::OutputDeviceClass::DeviceFactory
 
class mutabor::InputDeviceClass::DeviceFactory
 
class mutabor::TRouteClass< I, O, B >::RouteFactory
 
class mutabor::TRouteClass< I, O, B >::mutaborGUI::GUIRouteBase
 
void mutabor::BoxClass::initialize_box_data ()
 

Ausführliche Beschreibung

This group contains functions and classes that can be used to set up a generic event routing.

It uses the RtMidi library for MIDI access, but is kept independent from any GUI library.

Makro-Dokumentation

#define AddStr (   s1,
  s2,
  s3 
)    (s1 += s2 + s3)

Definiert in Zeile 492 der Datei GIS.cpp.

Wird benutzt von BeginParameter(), BeginRange() und EndParameter().

#define BracketDeep   (Brackets.length())

Definiert in Zeile 57 der Datei GSP.cpp.

Wird benutzt von DoParse() und GspParse().

#define CHAR0   CurrentLine[CurrentPos]

Definiert in Zeile 179 der Datei GSP.cpp.

Wird benutzt von DoParse(), GetSep(), GspParse(), ReadLong(), ReadNote(), ReadParaNumber(), ReadParaStr() und ReadTag().

#define CHAR1   CurrentLine[CurrentPos+1]

Definiert in Zeile 180 der Datei GSP.cpp.

Wird benutzt von GetSep() und ReadParaStr().

#define CHECKDUP (   target,
  source 
)    target = source;
#define CNAlter   1

Definiert in Zeile 422 der Datei GIS_Head.h.

Wird benutzt von ChordNote::CheckCloseAlter(), ChordNote::MutNoteOff() und ChordNote::MutNoteOn().

#define CNNoteOn   2
#define DEFAULT_BENDING_RANGE   2l

Definiert in Zeile 54 der Datei midicmn.h.

Wird benutzt von mutabor::OutputMidiPort::Load().

#define DEVFMIDFTEST_H

Definiert in Zeile 38 der Datei DevMidFTest.h.

#define DEVFMIDFTEST_H_PRECOMPILED

Definiert in Zeile 44 der Datei DevMidFTest.h.

#define DeviceMaxType   DTGis+1

Definiert in Zeile 96 der Datei Device.h.

#define DRUMCHANNEL   9

Definiert in Zeile 67 der Datei Device.h.

#define FOR_MUTWIN

Definiert in Zeile 53 der Datei GIS.h.

#define GMN_NO_KEY   -32000

Definiert in Zeile 89 der Datei GIS.h.

Wird benutzt von ChordNote::ChordNote(), ChordNote::Cmp(), GisNote::GisNote() und ChordNote::MutNoteOn().

#define H_MMSYSTEM

Definiert in Zeile 42 der Datei DevMidF.cpp.

#define H_MMSYSTEM

Definiert in Zeile 64 der Datei DevMidi.h.

#define HIDE_MUTABOR_C_API

Definiert in Zeile 43 der Datei Box.h.

#define MIDICMNTEST_H

Definiert in Zeile 38 der Datei midicmnTest.h.

#define MIDICMNTEST_H_PRECOMPILED

Definiert in Zeile 48 der Datei midicmnTest.h.

#define MMSYSTEM_H

Definiert in Zeile 40 der Datei DevGIS.cpp.

#define MU32_ROUTING_DEVICE_H

Definiert in Zeile 37 der Datei Device.h.

#define MU32_ROUTING_DEVICE_H_PRECOMPILED

Definiert in Zeile 53 der Datei Device.h.

#define MU32_ROUTING_GMN_DEVGIS_H

Definiert in Zeile 36 der Datei DevGIS.h.

#define MU32_ROUTING_GMN_DEVGIS_H_PRECOMPILED

Definiert in Zeile 51 der Datei DevGIS.h.

#define MU32_ROUTING_GMN_GIS_H

Definiert in Zeile 36 der Datei GIS.h.

#define MU32_ROUTING_GMN_GIS_H_PRECOMPILED

Definiert in Zeile 47 der Datei GIS.h.

#define MU32_ROUTING_GMN_GIS_HEAD_H

Definiert in Zeile 40 der Datei GIS_Head.h.

#define MU32_ROUTING_GMN_GIS_HEAD_H_PRECOMPILED

Definiert in Zeile 53 der Datei GIS_Head.h.

#define MU32_ROUTING_GMN_GSP_FILE_H

Definiert in Zeile 39 der Datei GSP_File.h.

#define MU32_ROUTING_GMN_GSP_FILE_H_PRECOMPILED

Definiert in Zeile 50 der Datei GSP_File.h.

#define MU32_ROUTING_GMN_GSP_H

Definiert in Zeile 44 der Datei GSP.h.

#define MU32_ROUTING_GMN_GSP_H_PRECOMPILED

Definiert in Zeile 55 der Datei GSP.h.

#define MU32_ROUTING_MIDI_COMMONFILEDEVICE_H

Definiert in Zeile 36 der Datei CommonFileDevice.h.

#define MU32_ROUTING_MIDI_COMMONFILEDEVICE_H_PRECOMPILED

Definiert in Zeile 49 der Datei CommonFileDevice.h.

#define MU32_ROUTING_MIDI_DEVMIDF_H

Definiert in Zeile 42 der Datei DevMidF.h.

#define MU32_ROUTING_MIDI_DEVMIDF_H_PRECOMPILED

Definiert in Zeile 56 der Datei DevMidF.h.

#define MU32_ROUTING_MIDI_DEVMIDI_H

Definiert in Zeile 37 der Datei DevMidi.h.

#define MU32_ROUTING_MIDI_DEVMIDI_H_PRECOMPILED

Definiert in Zeile 51 der Datei DevMidi.h.

#define MU32_ROUTING_ROUTE_H

Definiert in Zeile 42 der Datei Route.h.

#define MU32_ROUTING_ROUTE_H_PRECOMPILED

Definiert in Zeile 56 der Datei Route.h.

#define MU32_ROUTING_ROUTE_INLINES_H

Definiert in Zeile 36 der Datei Route-inlines.h.

#define MU32_ROUTING_ROUTE_INLINES_H_PRECOMPILED

Definiert in Zeile 50 der Datei Route-inlines.h.

#define MU32_ROUTING_ROUTECOMPAT_H

Definiert in Zeile 42 der Datei RouteCompat.h.

#define MU32_ROUTING_ROUTECOMPAT_H_PRECOMPILED

Definiert in Zeile 52 der Datei RouteCompat.h.

#define MUTABOR_NO_DELTA   (std::numeric_limits<mutint64>::max())
#define MUTABOR_THREAD_OK   wxMUTEX_NO_ERROR

Definiert in Zeile 137 der Datei thread.h.

#define NEW_LINE   "\n"

Definiert in Zeile 72 der Datei GSP.cpp.

Wird benutzt von GetSep() und ReadParaStr().

#define NOTE   ((GisNote*)note)

Definiert in Zeile 825 der Datei GIS_Head.cpp.

Wird benutzt von ChordNote::SetNoteOn().

#define NOTE1   ((GisNote*)note1)

Definiert in Zeile 741 der Datei GIS_Head.cpp.

Wird benutzt von CmpNote().

#define NOTE2   ((GisNote*)note2)

Definiert in Zeile 742 der Datei GIS_Head.cpp.

Wird benutzt von CmpNote().

#define NTAGS   52

Definiert in Zeile 67 der Datei GIS.h.

Wird benutzt von GetTagId().

#define NTAGSHORTS   6

Definiert in Zeile 68 der Datei GIS.h.

Wird benutzt von GetTagId().

#define READCONFIGINT (   config,
  name,
  variable,
  defval 
)
Wert:
variable = config.Read((name),defval); \
DEBUGLOG2(config,("Read " name " = %d"),variable);
#define DEBUGLOG2(level,...)
Definition: debug.h:241

Definiert in Zeile 362 der Datei Route.cpp.

#define READCONFIGSTR (   config,
  name,
  variable,
  defval 
)
Wert:
variable = config.Read((name),defval); \
DEBUGLOG2(config,("Read " name " = %s"),variable.c_str());
#define DEBUGLOG2(level,...)
Definition: debug.h:241

Definiert in Zeile 358 der Datei Route.cpp.

#define ROUTING_BOX_H

Definiert in Zeile 36 der Datei Box.h.

#define ROUTING_BOX_H_PRECOMPILED

Definiert in Zeile 55 der Datei Box.h.

#define ROUTING_BOX_INLINES

Definiert in Zeile 35 der Datei Box-inlines.h.

#define ROUTING_BOX_INLINES_PRECOMPILED

Definiert in Zeile 48 der Datei Box-inlines.h.

#define ROUTING_DEVICE_INLINES

Definiert in Zeile 35 der Datei Device-inlines.h.

#define ROUTING_DEVICE_INLINES_PRECOMPILED

Definiert in Zeile 46 der Datei Device-inlines.h.

#define ROUTING_MIDICMN_H

Definiert in Zeile 36 der Datei midicmn.h.

#define ROUTING_MIDICMN_H_PRECOMPILED

Definiert in Zeile 49 der Datei midicmn.h.

#define ROUTING_TIMINGPARAMS

Definiert in Zeile 35 der Datei timing.h.

#define ROUTING_TIMINGPARAMS_PRECOMPILED

Definiert in Zeile 46 der Datei timing.h.

#define SepPos   SepPos()

Definiert in Zeile 46 der Datei GSP.cpp.

Wird benutzt von GetSep(), ReadNote() und ReadTag().

#define SRC_KERNEL_ROUTING_EVENT_H

Definiert in Zeile 35 der Datei event.h.

#define SRC_KERNEL_ROUTING_EVENT_H_PRECOMPILED

Definiert in Zeile 46 der Datei event.h.

#define SRC_KERNEL_ROUTING_THREAD_H

Definiert in Zeile 36 der Datei thread.h.

#define SRC_KERNEL_ROUTING_THREAD_H_PRECOMPILED

Definiert in Zeile 46 der Datei thread.h.

#define SRC_KERNEL_ROUTING_WATCHDOG_H

Definiert in Zeile 34 der Datei watchdog.h.

#define SRC_KERNEL_ROUTING_WATCHDOG_H_PRECOMPILED

Definiert in Zeile 46 der Datei watchdog.h.

#define strdupchr (   a)    (a)

Definiert in Zeile 331 der Datei GIS.cpp.

Wird benutzt von GisNote::GisNote().

#define TAG   ((GisTag*)Cursor)

Definiert in Zeile 506 der Datei GIS_Head.cpp.

Wird benutzt von GisReadArtHead::Read().

#define TAGEND   ((GisTagEnd*)Cursor)

Definiert in Zeile 507 der Datei GIS_Head.cpp.

Wird benutzt von GisReadArtHead::Read().

#define TAKESEP   takesep()

Definiert in Zeile 188 der Datei GSP.cpp.

Wird benutzt von GetSep().

#define TTaccent   22

Definiert in Zeile 80 der Datei GIS.h.

Wird benutzt von GisReadArtHead::Read().

#define TTalter   50

Definiert in Zeile 84 der Datei GIS.h.

Wird benutzt von ChordNote::MutNoteOn(), mutabor::InputGis::Proceed() und GisReadArtHead::Read().

#define TTinstr   19

Definiert in Zeile 77 der Datei GIS.h.

Wird benutzt von GisReadArtHead::Read().

#define TTintens   1

Definiert in Zeile 74 der Datei GIS.h.

Wird benutzt von GisReadArtHead::Read().

#define TTkey   36

Definiert in Zeile 82 der Datei GIS.h.

Wird benutzt von GisWriteHead::ProceedGis().

#define TTmutabor   51

Definiert in Zeile 85 der Datei GIS.h.

Wird benutzt von mutabor::InputGis::Proceed().

#define TToct   37

Definiert in Zeile 83 der Datei GIS.h.

Wird benutzt von GisWriteHead::ProceedGis() und GisReadArtHead::Read().

#define TTslur   2

Definiert in Zeile 75 der Datei GIS.h.

#define TTstacc   21

Definiert in Zeile 79 der Datei GIS.h.

Wird benutzt von GisReadArtHead::Read().

#define TTtempo   12

Definiert in Zeile 76 der Datei GIS.h.

Wird benutzt von GisReadArtHead::Read().

#define TTten   23

Definiert in Zeile 81 der Datei GIS.h.

Wird benutzt von GisReadArtHead::Read().

#define TTtie   20

Definiert in Zeile 78 der Datei GIS.h.

Wird benutzt von ChordNote::CheckCloseTie().

#define uchar   unsigned char

Definiert in Zeile 76 der Datei GSP.cpp.

#define WTAG   ((GisTag*)(*Cursor))

Definiert in Zeile 1242 der Datei GIS_Head.cpp.

Wird benutzt von GisWriteHead::ProceedGis().

#define WTAGEND   ((GisTagEnd*)token)

Definiert in Zeile 1243 der Datei GIS_Head.cpp.

Wird benutzt von GisWriteHead::ProceedGis().

#define ZIFFER   (('0') <= t[i] && t[i] <= ('9'))

Definiert in Zeile 86 der Datei GIS_Head.cpp.

Wird benutzt von GetTheSpeedFactor().

Dokumentation der benutzerdefinierten Typen

Definiert in Zeile 210 der Datei Box.h.

typedef hidden::mutabor_tone mutabor::BoxClass::tone::base

Definiert in Zeile 140 der Datei Box.h.

template<class I = InputDevice, class O = OutputDevice, class B = Box>
typedef B mutabor::TRouteClass< I, O, B >::Box

Definiert in Zeile 116 der Datei Route.h.

typedef boost::intrusive_ptr< BoxClass > mutabor::Box

Definiert in Zeile 121 der Datei Box.h.

typedef std::vector<Box> mutabor::BoxListType

Definiert in Zeile 123 der Datei Box.h.

Definiert in Zeile 1058 der Datei Device.h.

typedef std::vector<int> mutabor::ChannelData::controller_vector

Definiert in Zeile 103 der Datei Device.h.

typedef std::vector<current_tone_entry> mutabor::BoxClass::current_tone_list

Definiert in Zeile 511 der Datei Box.h.

template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
typedef P mutabor::CommonTypedDeviceAPI< T, P, L >::DevicePtr

Definiert in Zeile 691 der Datei Device.h.

typedef hidden::mutabor_error_type mutabor::error_type

Definiert in Zeile 105 der Datei Box.h.

typedef boost::intrusive_ptr< event_class > mutabor::event

Definiert in Zeile 668 der Datei event.h.

typedef std::vector<BoxFactory *> mutabor::BoxFactory::factorylist
protected

Definiert in Zeile 942 der Datei Box.h.

typedef std::vector<DeviceFactory *> mutabor::DeviceFactory::factorylist
protected

Definiert in Zeile 1436 der Datei Device.h.

typedef void GisReadArtProceed(GisReadArtHead *token, char turn)

Definiert in Zeile 300 der Datei GIS_Head.h.

typedef void GisReadProceed(GisReadHead *, char)

Definiert in Zeile 134 der Datei GIS_Head.h.

typedef struct harmonie_ereignis mutabor::hidden::harmony_action

Definiert in Zeile 80 der Datei Box.h.

template<class I = InputDevice, class O = OutputDevice, class B = Box>
typedef I mutabor::TRouteClass< I, O, B >::InputDevice

Definiert in Zeile 114 der Datei Route.h.

typedef boost::intrusive_ptr< InputDeviceClass > mutabor::InputDevice

Definiert in Zeile 1009 der Datei Device.h.

typedef CommonTypedDeviceAPI<InputDeviceClass>::listtype mutabor::InputDeviceList

Definiert in Zeile 1011 der Datei Device.h.

Definiert in Zeile 202 der Datei Box.h.

Definiert in Zeile 1057 der Datei Device.h.

typedef struct keyboard_ereignis mutabor::hidden::keyboard_action

Definiert in Zeile 78 der Datei Box.h.

typedef BoxListType mutabor::BoxClass::listtype

Definiert in Zeile 237 der Datei Box.h.

template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
typedef L mutabor::CommonTypedDeviceAPI< T, P, L >::listtype

Definiert in Zeile 692 der Datei Device.h.

typedef std::list<logic_entry> mutabor::BoxClass::logic_list

Definiert in Zeile 468 der Datei Box.h.

typedef boost::unordered_multiset<entry, hash_type> mutabor::InputDeviceClass::current_keys_type::map_type

Definiert in Zeile 1056 der Datei Device.h.

typedef struct midi_ereignis mutabor::hidden::midi_action

Definiert in Zeile 79 der Datei Box.h.

typedef std::vector< uint8_t > mutabor::midi_string

Definiert in Zeile 75 der Datei Device.h.

template<class I = InputDevice, class O = OutputDevice, class B = Box>
typedef O mutabor::TRouteClass< I, O, B >::OutputDevice

Definiert in Zeile 115 der Datei Route.h.

typedef boost::intrusive_ptr< OutputDeviceClass > mutabor::OutputDevice

Definiert in Zeile 836 der Datei Device.h.

typedef CommonTypedDeviceAPI<OutputDeviceClass>::listtype mutabor::OutputDeviceList

Definiert in Zeile 838 der Datei Device.h.

typedef std::set<OutputDevice> mutabor::OutputDeviceSet

Definiert in Zeile 839 der Datei Device.h.

template<class I = InputDevice, class O = OutputDevice, class B = Box>
typedef boost::intrusive_ptr<TRouteClass> mutabor::TRouteClass< I, O, B >::Route

Definiert in Zeile 119 der Datei Route.h.

typedef TRouteClass<InputDevice,OutputDevice, Box>::Route mutabor::Route

Definiert in Zeile 545 der Datei Route.h.

typedef TRouteClass<InputDevice,OutputDevice, Box> mutabor::RouteClass

Definiert in Zeile 546 der Datei Route.h.

template<class I = InputDevice, class O = OutputDevice, class B = Box>
typedef std::list<Route> mutabor::TRouteClass< I, O, B >::routeListType

Definiert in Zeile 120 der Datei Route.h.

typedef TRouteClass<InputDevice,OutputDevice, Box>::routeListType mutabor::routeListType

Definiert in Zeile 547 der Datei Route.h.

template<class I = InputDevice, class O = OutputDevice, class B = Box>
typedef std::list<thistype *> mutabor::TRouteClass< I, O, B >::routePtrList

Definiert in Zeile 121 der Datei Route.h.

typedef TRouteClass<InputDevice,OutputDevice, Box>::routePtrList mutabor::routePtrList

Definiert in Zeile 548 der Datei Route.h.

typedef struct TagListData TagList
template<class I = InputDevice, class O = OutputDevice, class B = Box>
typedef TRouteClass mutabor::TRouteClass< I, O, B >::thistype

Definiert in Zeile 113 der Datei Route.h.

template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
typedef T mutabor::CommonTypedDeviceAPI< T, P, L >::thistype

Definiert in Zeile 690 der Datei Device.h.

typedef std::vector<tone_entry> mutabor::BoxClass::tone_list

Definiert in Zeile 486 der Datei Box.h.

Dokumentation der Aufzählungstypen

anonymous enum
Aufzählungswerte
OpenAllBoxes 
OpenAllOutDevices 
OpenAllInDevices 

Definiert in Zeile 1001 der Datei Box.h.

1001  {
1002  OpenAllBoxes = 0x01,
1003  OpenAllOutDevices = 0x02,
1004  OpenAllInDevices = 0x04
1005  };
anonymous enum
Aufzählungswerte
none 
Logic 
CurrentLogic 

Definiert in Zeile 460 der Datei Box.h.

anonymous enum
Aufzählungswerte
sounding 
silent 
invalid 

Definiert in Zeile 480 der Datei Box.h.

enum ARType
Aufzählungswerte
ARNormal 
ARSlur 
ARTenuto 
ARPortato 
ARStaccatto 

Definiert in Zeile 60 der Datei GIS_Head.h.

Aufzählungswerte
IDTypeSession 
IDTypeFile 

Definiert in Zeile 204 der Datei Box.h.

Aufzählungswerte
MIN_BOX 
NewBox 
NoBox 
GmnBox 
Box0 

Definiert in Zeile 112 der Datei Box.h.

113  {
114  MIN_BOX = -3,
115  NewBox = -3,
116  NoBox,
117  GmnBox,
118  Box0 = 0
119  };
Aufzählungswerte
BoxChanged 
LogicChanged 
KeysChanged 
ActionChanged 

Definiert in Zeile 212 der Datei Box.h.

Aufzählungswerte
IDTypeSession 
IDTypeFile 
IDTypeHardware 

Definiert in Zeile 506 der Datei Device.h.

Aufzählungswerte
DTNotSet 
DTUnknown 
DTMidiPort 
DTMidiFile 
DTGis 

Definiert in Zeile 91 der Datei Device.h.

enum GisType
Aufzählungswerte
GTNull 
GTUnknown 
GTSequenz 
GTSegment 
GTTag 
GTTagBegin 
GTTagEnd 
GTNote 
GTParaInt 
GTParaReal 
GTParaStr 
GTComma 

Definiert in Zeile 98 der Datei GIS.h.

99 {
100  GTNull,
101  GTUnknown, // 1
102  GTSequenz, // 2
103  GTSegment,
104  GTTag,
105  GTTagBegin, // 5
106  GTTagEnd,
107  GTNote, // 7
108  GTParaInt,
109  GTParaReal,
110  GTParaStr, // 10
111  GTComma
112 };
Definition: GIS.h:107
Definition: GIS.h:103
Definition: GIS.h:104
Definition: GIS.h:100
Definition: GIS.h:106
Definition: GIS.h:111
Definition: GIS.h:101
Definition: GIS.h:108
Definition: GIS.h:102
Definition: GIS.h:110
Aufzählungswerte
KeyboardNoLogic 
KeyboardLogic 
KeyboardAny 

Definiert in Zeile 569 der Datei Box.h.

569  {
570  KeyboardNoLogic, // Execute only logics
571  KeyboardLogic, // Execute only tone systems
572  KeyboardAny // Any possible action
573  };
Aufzählungswerte
DeviceUnregistered 
DeviceInitializing 
DeviceStop 
DevicePlay 
DevicePause 
DeviceCompileError 
DeviceTimingError 
DeviceKilled 

Definiert in Zeile 77 der Datei Device.h.

77  {
78  DeviceUnregistered = -1, //< Unregistered device – currently unused
79  DeviceInitializing, //< Intitialization phase (e.g. thread creation)
80  DeviceStop, //< Device is OK, but no playback.
81  DevicePlay, //< Playback is running
82  DevicePause, //< Playback is paused
83  DeviceCompileError, //< Error while compiling/decoding the file (file propably corrupted)
84  DeviceTimingError, //< Timing problems e.g. backwards runnig time in a file. May be reset after Stop()
85  DeviceKilled //< A problem that makes the device (probably) unusable.
86  };

Type of route input filter.

Aufzählungswerte
RTall 

all events will pass

RTelse 

all unhandled events will pass

RTchannel 

use only a certain channel range (depends on the input device type)

RTstaff 

use only a certain staff/track/… range (depends on the input device type)

Definiert in Zeile 78 der Datei Route.h.

79  {
80  RTall,
81  RTelse,
82  RTchannel,
83  RTstaff
84  };
use only a certain staff/track/… range (depends on the input device type)
Definition: Route.h:83
all events will pass
Definition: Route.h:80
use only a certain channel range (depends on the input device type)
Definition: Route.h:82
all unhandled events will pass
Definition: Route.h:81
Aufzählungswerte
wxTHREAD_WAIT_BLOCK 
wxTHREAD_WAIT_YIELD 
wxTHREAD_WAIT_DEFAULT 

Definiert in Zeile 1179 der Datei Device.h.

Dokumentation der Funktionen

int Acc2Int ( const std::string &  acc)

Definiert in Zeile 308 der Datei GIS.cpp.

Wird benutzt von GisNote::GetKey().

310 {
311  if ( acc.empty() ) return 0;
312 
313  int i = 0;
314 
315 #ifdef WX
316  for (size_t j = 0; j < acc.length(); j++)
317 #else
318  for (int j = 0; acc[j]; j++)
319 #endif
320  {
321 
322  if ( acc[j] == '&' )
323  i--;
324  else if ( acc[j] == '#' )
325  i++;
326  }
327  return i;
328 }
std::string mutabor::BoxClass::ActionToString ( ChangedCallback::action action)

Definiert in Zeile 861 der Datei Box.cpp.

Benutzt mutabor::hidden::do_aktion::name.

861  {
862  std::string retval = action->name;
863  return retval;
864  }
virtual void mutabor::BoxClass::Activate ( )
inlinevirtual

Activate the current box.

This method is called when a box is being activated. Its implementation should be done in the user code. Otherwise its just a no-op function.

Erneute Implementation in mutaborGUI::BoxData.

Definiert in Zeile 689 der Datei Box.h.

689 {}
bool mutabor::BoxClass::ActivateAll ( bool  isRealtime)
static

Activate all boxes.

This resets the action traces of all boxes.

Zu beachten
Code should be taken from MutFrame::DoActivate
Parameter
isRealtimeShall non-realtime devices (e.g., file devices) act in realtime mode or not
Rückgabewerte
trueif Activation succeeded
falseotherwise

Definiert in Zeile 483 der Datei Box.cpp.

Benutzt mutabor::CurrentTime, mutabor::OpenAll(), mutabor::OpenAllBoxes, mutabor::OpenAllInDevices, mutabor::OpenAllOutDevices und mutabor::CurrentTimer::UseRealtime().

Wird benutzt von mutaborGUI::MutFrame::CmDoActivate().

483  {
484  CurrentTime.UseRealtime(realtime);
486  BoxClass_CallReset callreset;
487 
488  std::for_each(boxList.begin(),boxList.end(),callreset);
489  //AktionenInit();
490 
491  // In batch mode Batch Play handles open and close.
492  bool retval = OpenAll(OpenAllBoxes
493  | (realtime?
496  : 0)) ;
497 
498  if (!boxList.empty()) {
499  mutabor::Box b = boxList.front();
500  if (b) b->Activate();
501  }
502  return retval;
503  }
static listtype boxList
Definition: Box.h:805
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:121
bool OpenAll(int mode)
Definition: Box.cpp:436
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:458
CurrentTimer CurrentTime
Definition: timing.cpp:43
template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::Add ( OutputDevice out)
virtual

add a new output device

Definiert in Zeile 141 der Datei Route.cpp.

141  {
142  Out = out;
143  }
OutputDevice Out
Definition: Route.h:463
template<class I = InputDevice, class O = OutputDevice, class B = Box>
virtual void mutabor::TRouteClass< I, O, B >::Add ( InputDevice in)
virtual

add a new input device

template<class I = InputDevice, class O = OutputDevice, class B = Box>
virtual void mutabor::TRouteClass< I, O, B >::Add ( Box b)
virtual

add a new box

void mutabor::BoxClass::Add ( Route route)
virtual

add a route

Definiert in Zeile 124 der Datei Box.cpp.

Benutzt DEBUGLOG, mutASSERT und TRACEC.

124  {
125  BoxLock lock(this);
126  DEBUGLOG (smartptr, "Route; %p" ,(void*)route.get());
127 #ifdef DEBUG
128  routeListType::const_iterator i =
129  find(routes.begin(),routes.end(),route);
130  mutASSERT(i == routes.end());
131  mutASSERT(IsInBoxList(this));
132 #endif
133  TRACEC;
134  routes.push_back(route);
135  DEBUGLOG (smartptr, "Route; %p saved" ,(void*)route.get());
136  }
#define DEBUGLOG(level,...)
Definition: debug.h:240
#define TRACEC
Definition: debug.h:246
#define mutASSERT(expr)
routeListType routes
Definition: Box.h:813
static bool IsInBoxList(const Box b)
Definition: Box.h:863
virtual void mutabor::Device::Add ( Route route)
pure virtual
template<class T , class P , class L >
void mutabor::CommonTypedDeviceAPI< T, P, L >::Add ( Route route)
virtual

add a route

Implementiert mutabor::Device.

Definiert in Zeile 135 der Datei Device.cpp.

Benutzt DEBUGLOG, mutASSERT und TRACEC.

Wird benutzt von mutabor::CommonTypedDeviceAPI< T, P, L >::Replace().

135  {
136  DEBUGLOG (smartptr, "Route; %p" ,(void*)route.get());
137 #ifdef DEBUG
138  routeListType::const_iterator i =
139  find(routes.begin(),routes.end(),route);
140  mutASSERT(i == routes.end());
141  mutASSERT(IsInDeviceList(static_cast<thistype *>(this)));
142 #endif
143  TRACEC;
144  routes.push_back(route);
145  DEBUGLOG (smartptr, "Route; %p saved" ,(void*)route.get());
146  }
#define DEBUGLOG(level,...)
Definition: debug.h:240
routeListType routes
Definition: Device.h:653
#define TRACEC
Definition: debug.h:246
#define mutASSERT(expr)
static bool IsInDeviceList(const DevicePtr dev)
Definition: Device.h:823
void mutabor::InputDeviceClass::current_keys_type::add ( int  key,
int  velocity,
int  unique_id,
Route R,
InputDevice  i,
const ChannelData c,
void *  userdata 
)
inline

Definiert in Zeile 1060 der Datei Device.h.

Benutzt DEBUGLOG und mutabor::InputDeviceClass::current_keys_type::map.

Wird benutzt von mutabor::InputDeviceClass::NoteOn() und mutabor::InputDeviceClass::Panic().

1066  {
1067  map.insert(entry(key,
1068  unique_id,
1069  velocity,
1070  R,
1071  i,
1072  &c,
1073  userdata));
1074  DEBUGLOG(routing,("(key = %d, channel = %lu, id = %lu)"),
1075  key,
1076  (unsigned long)R->get_session_id(),
1077  (unsigned long)unique_id);
1078  }
#define DEBUGLOG(level,...)
Definition: debug.h:240
void * userdata
Definition: Device.h:676
void mutabor::InputDeviceClass::current_keys_type::add ( entry  e)
inline

Definiert in Zeile 1079 der Datei Device.h.

Benutzt mutabor::InputDeviceClass::current_keys_type::map.

1079  {
1080  map.insert(e);
1081  }
void mutabor::BoxClass::tone::add_value ( mutint64 retval) const
inline

Definiert in Zeile 191 der Datei Box.h.

Benutzt mutabor::hidden::MUT_INTERVAL::active, mutabor::hidden::mutabor_active_tone und mutabor::hidden::MUT_INTERVAL::value.

191  {
193  retval += value;
194  }
195  }
enum mutabor_interval_type_constants active
Definition: Interpre.h:81
void ChordNote::AddGis ( GisToken token)

Definiert in Zeile 852 der Datei GIS_Head.cpp.

Benutzt mutabor::CurrentTime und GisToken::Sep.

Wird benutzt von ChordNote::ChordNote() und GisWriteHead::GetFreeNote().

853 {
854  *Cursor = token;
855  Cursor = &((*Cursor)->Next);
856  LastSep = &(token->Sep);
857  CurrentTime = 0;
858 }
GisToken ** Cursor
Definition: GIS_Head.h:435
std::string * LastSep
Definition: GIS_Head.h:445
std::string Sep
Definition: GIS.h:121
mutabor::frac CurrentTime
Definition: GIS_Head.h:437
void mutabor::BoxClass::AddNote ( int  note,
size_t  id,
size_t  channel,
void *  userdata 
)
inline

Definiert in Zeile 559 der Datei Box.h.

Benutzt mutabor::hidden::AddKey() und mutabor::BoxClass::box.

559  {
560  scoped_watchdog lock(this);
561  hidden::AddKey(box, note, id, channel, userdata);
562  }
struct mutabor_box_type * box
Definition: Box.h:810
void AddKey(mutabor_box_type *box, int taste, size_t id, size_t channel, void *userdata)
Definition: Execute.cpp:929
void AddStr ( std::string &  Target,
int  Pos,
const std::string &  Source 
)
inline

Definiert in Zeile 81 der Datei GSP.cpp.

Benutzt DEBUGLOG2 und mutUnused.

82 {
83  mutUnused(Pos);
84  DEBUGLOG2(other,("%s + %s"), Target.c_str(), Source.c_str());
85  Target += Source;
86  DEBUGLOG2(other,("=%s"), Target.c_str());
87 }
#define mutUnused(expr)
Definition: Defs.h:90
#define DEBUGLOG2(level,...)
Definition: debug.h:241
TagList* AddTag ( TagList **  list,
GisTag tag 
)

Definiert in Zeile 473 der Datei GIS_Head.cpp.

Benutzt GTTag, TagListData::Next, RemoveTag(), TagListData::Tag und GisTag::Type().

Wird benutzt von GisWriteHead::ProceedGis() und GisReadArtHead::Read().

474 {
475  if ( *list && (*list)->Tag->Type() == GTTag && tag->Type() == GTTag )
476  RemoveTag(list);
477 
478  TagList *TopTag = new TagList;
479 
480  TopTag->Next = *list;
481 
482  TopTag->Tag = tag;
483 
484  *list = TopTag;
485 
486  return *list;
487 }
Definition: GIS.h:104
struct TagListData * Next
Definition: GIS_Head.h:147
GisTag * Tag
Definition: GIS_Head.h:148
struct TagListData TagList
TagList * RemoveTag(TagList **list)
Definition: GIS_Head.cpp:462
virtual GisType Type() const
Definition: GIS.h:307
void GisWriteHead::AddTime ( mutabor::frac  dTime)

Definiert in Zeile 1419 der Datei GIS_Head.cpp.

Benutzt mutabor::CurrentTime.

Wird benutzt von mutabor::OutputGis::do_AddTime().

1420 {
1421  TotalTime += dTime;
1422  CurrentTime += dTime;
1423 
1424  if ( ChordNotes ) ChordNotes->CountOnTime(dTime);
1425 
1426  if ( Next ) Next->AddTime(dTime);
1427 }
ChordNote * ChordNotes
Definition: GIS_Head.h:324
void CountOnTime(mutabor::frac dTime)
Definition: GIS_Head.cpp:816
void AddTime(mutabor::frac dTime)
Definition: GIS_Head.cpp:1419
GisWriteHead * Next
Definition: GIS_Head.h:316
mutabor::frac CurrentTime
Definition: GIS_Head.h:320
mutabor::frac TotalTime
Definition: GIS_Head.h:320
void mutabor::OutputDeviceClass::AddTime ( frac  time)
inline

Definiert in Zeile 891 der Datei Device.h.

Benutzt mutabor::OutputDeviceClass::do_AddTime() und mutabor::OutputDeviceClass::write_lock.

891  {
892  ScopedLock lock(write_lock);
893  do_AddTime(time);
894  }
wxMutexLocker ScopedLock
Definition: thread.h:57
virtual void do_AddTime(frac time)=0
static void mutabor::OutputDeviceClass::all_handle_event ( event  e)
inlinestatic

Definiert in Zeile 909 der Datei Device.h.

Benutzt mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::deviceList und mutabor::OutputDeviceClass::handle_event().

Wird benutzt von mutabor::InputMidiPort::Proceed(), mutabor::InputMidiFile::Proceed() und mutabor::CommonMidiInput< D >::Proceed().

909  {
910  for (OutputDeviceList::iterator i = deviceList.begin();
911  i != deviceList.end(); ++i) {
912  (*i) -> handle_event (e);
913  }
914 
915  }
void handle_event(event e)
Definition: Device.h:904
void mutabor::BoxClass::AppendToBoxList ( Box  dev)
staticprotected

Definiert in Zeile 280 der Datei Box.cpp.

Benutzt DEBUGLOG2, isDebugFlag, print_stacktrace() und UNREACHABLECT.

Wird benutzt von mutabor::BoxClass::BoxClass().

281  {
282 #ifdef DEBUG
283  DEBUGLOG2(routing,("Adding box %p"),b.get());
284  print_stacktrace(isDebugFlag(smartptr));
285  typename listtype::iterator i =
286  FindInBoxList(b);
287  if (i != boxList.end()) {
289  }
290 #endif
291  boxList.push_back(b);
292  }
static listtype boxList
Definition: Box.h:805
#define DEBUGLOG2(level,...)
Definition: debug.h:241
#define isDebugFlag(level)
Definition: debug.h:133
static listtype::iterator FindInBoxList(Box b)
Definition: Box.h:856
#define UNREACHABLECT(type)
Definition: debug.h:255
BoxListType listtype
Definition: Box.h:237
void print_stacktrace(bool flag)
Definition: debug.cpp:186
template<class T , class P , class L >
void mutabor::CommonTypedDeviceAPI< T, P, L >::AppendToDeviceList ( DevicePtr  dev)
staticprotected

Definiert in Zeile 292 der Datei Device.cpp.

Benutzt UNREACHABLECT.

Wird benutzt von mutabor::CommonTypedDeviceAPI< InputDeviceClass >::CommonTypedDeviceAPI().

293  {
294 #ifdef DEBUG
295  typename listtype::iterator i =
296  FindInDeviceList(dev);
297  if (i != deviceList.end()) {
299  }
300 #endif
301  deviceList.push_back(dev);
302  }
static listtype::iterator FindInDeviceList(DevicePtr dev)
Definition: Device.h:816
static listtype deviceList
Definition: Device.h:694
#define UNREACHABLECT(type)
Definition: debug.h:255
template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::AppendToRouteList ( Route  route)
staticprotected

Definiert in Zeile 282 der Datei Route.cpp.

Benutzt mutASSERT und TRACET.

Wird benutzt von mutabor::TRouteClass< InputDevice, OutputDevice, Box >::TRouteClass().

283  {
284 #ifdef DEBUG
285  typename TRouteClass<I, O>::routeListType::iterator r =
286  std::find(routeList.begin(),
287  routeList.end(),
288  route.get());
289  mutASSERT(r == routeList.end());
290 #endif
291  TRACET(thistype);
292  routeList.push_back(route);
293  }
#define mutASSERT(expr)
static routeListType routeList
Definition: Route.h:472
#define TRACET(type)
Definition: debug.h:247
TRouteClass thistype
Definition: Route.h:113
bool mutabor::InputDeviceClass::BatchPlay ( )
static

Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex route environment.

In contrast to the normal Play() function this function doesn't use timers, but simulates timing.

Noch zu erledigen:
{find a better place for BatchPlay and RealtimePlay: we should not reference CurrentTime from Device.{h,cpp,-inlines.h} }
Noch zu erledigen:
implement event types that use timestamps

Definiert in Zeile 446 der Datei Device.cpp.

Benutzt mutabor::CurrentTime, mutabor::CommonTypedDeviceAPI< InputDeviceClass >::deviceList, mutabor::CurrentTimer::Get(), mutabor::InClose(), MUTABOR_NO_DELTA, mutASSERT, mutint64, mutabor::OpenAll(), mutabor::OpenAllInDevices, mutabor::OpenAllOutDevices, mutabor::OutClose(), mutabor::CurrentTimer::Set(), mutabor::CurrentTimer::Stop() und mutabor::CurrentTimer::UseRealtime().

Wird benutzt von InputMidiFileTest::testAfterTouch(), InputMidiFileTest::testAllControllerOff(), InputMidiFileTest::testBankSelect(), InputMidiFileTest::testBatchPlay1(), OutputMidiFileTest::testBatchPlay1(), InputMidiFileTest::testBoxMidiIn(), InputMidiFileTest::testBug019010(), InputMidiFileTest::testControllerPlay(), InputMidiFileTest::testRpnNrpn() und InputMidiFileTest::testSysEx().

446  {
447  // Note::keep this function in sync with Activate (Runtime.cpp)
448  typedef std::pair <mutint64, InputDevice> queue_element;
449  typedef std::priority_queue< queue_element,
450  std::deque<queue_element>,
451  std::greater<queue_element> > batch_queue;
452  // Currenttime is used by output devices to keep track of the time
454  CurrentTime.UseRealtime(false);
455  CurrentTime.Set(0);
456 
457 
459 
460  batch_queue queue;
461 
462  for (InputDeviceList::iterator i = deviceList.begin();
463  i != deviceList.end(); i++) {
464  (*i)->Play();
465  queue.push(queue_element(0,*i));
466  }
467 
468  mutASSERT(CurrentTime.Get() == 0);
469 
470  while (!queue.empty()) {
471  queue_element element = queue.top();
472  queue.pop();
473  mutASSERT(element.first >= CurrentTime.Get());
474  CurrentTime = element.first;
475  mutint64 delta = element.second->PrepareNextEvent();
476  if (delta != MUTABOR_NO_DELTA) {
477  mutASSERT(delta >= 0);
478  element.first += delta;
479  queue.push(element);
480  }
481  }
482 
483  for (InputDeviceList::iterator i = deviceList.begin();
484  i != deviceList.end(); i++) {
485  (*i)->Stop();
486  }
487 
490  // mutabor::BoxClose(); // will be handled otherways.
492 
493 // GlobalReset();
494 
495 
496 
497  return true;
498  }
void OutClose()
Definition: Device.cpp:696
void Stop()
Dummy function for stopping the timer.
Definition: timing.h:505
#define mutASSERT(expr)
mutint64 Get()
Return the current time in μs.
Definition: timing.h:496
#define MUTABOR_NO_DELTA
Definition: timing.h:62
bool OpenAll(int mode)
Definition: Box.cpp:436
void InClose()
Definition: Device.cpp:732
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:458
void Set(mutint64 t=0)
Set the current time.
Definition: timing.h:482
#define mutint64
Definition: Defs.h:89
CurrentTimer CurrentTime
Definition: timing.cpp:43
iterator mutabor::InputDeviceClass::current_keys_type::begin ( )
inline
const_iterator mutabor::InputDeviceClass::current_keys_type::begin ( ) const
inline

Definiert in Zeile 1111 der Datei Device.h.

Benutzt mutabor::InputDeviceClass::current_keys_type::map.

1111 { return map.begin(); }
int BeginParameter ( )

Definiert in Zeile 619 der Datei GIS.cpp.

Benutzt AddStr, DEBUGLOG2 und TagSep.

Wird benutzt von ReadTag().

620 {
621  DEBUGLOG2(gmnfile,("<"));
622  AddStr(TagSep, ("<"), Sep);
623  return 0;
624 }
std::string Sep
Definition: GSP.cpp:39
#define AddStr(s1, s2, s3)
Definition: GIS.cpp:492
std::string TagSep
Definition: GIS.cpp:111
#define DEBUGLOG2(level,...)
Definition: debug.h:241
int BeginRange ( )

Definiert in Zeile 638 der Datei GIS.cpp.

Benutzt AddStr, Clear(), Current, DEBUGLOG2, GisTagBegin::End, LastOpenRange, LastPara, GisToken::Next, Para, GisToken::Sep, Tag(), TagMode, TagName und TagSep.

Wird benutzt von DoParse().

639 {
640  DEBUGLOG2(gmnfile,("( "));
641 
642  if ( LastPara )
643  AddStr(LastPara->Sep, ("("), Sep);
644  else if ( Para )
645  AddStr(Para->Sep, ("("), Sep);
646  else
647  AddStr(TagSep, ("("), Sep);
648 
650 
651  *Current = Tag;
652 
653  Current = &(Tag->Next);
654 
655  Tag->End = LastOpenRange;
656 
657  LastOpenRange = Tag;
658 
659  Clear(&TagName);
660 
661  Clear(&TagSep);
662 
663  Para = 0;
664 
665  LastPara = 0;
666 
667  TagMode = 0;
668 
669  return 0;
670 }
char TagMode
Definition: GIS.cpp:109
GisTagBegin * LastOpenRange
Definition: GIS.cpp:108
std::string Sep
Definition: GSP.cpp:39
GisToken * End
Definition: GIS.h:343
int Tag(const std::string &tagName)
Definition: GIS.cpp:726
GisToken * Para
Definition: GIS.cpp:112
GisToken * Next
Definition: GIS.h:120
#define AddStr(s1, s2, s3)
Definition: GIS.cpp:492
std::string TagSep
Definition: GIS.cpp:111
std::string TagName
Definition: GIS.cpp:110
GisToken * LastPara
Definition: GIS.cpp:112
GisToken ** Current
Definition: GIS.cpp:107
#define DEBUGLOG2(level,...)
Definition: debug.h:241
std::string Sep
Definition: GIS.h:121
void Clear(std::string *s)
Definition: GIS.cpp:493
int BeginSegment ( )

Definiert in Zeile 555 der Datei GIS.cpp.

Benutzt BuildTag(), GisSegment::Contents, Current, DEBUGLOG2, LastOpenBracket und TagMode.

Wird benutzt von DoParse().

556 {
557  DEBUGLOG2(gmnfile,("{"));
558 
559  if ( TagMode ) BuildTag();
560 
561  GisSegment *Seg = new GisSegment(0, Sep, LastOpenBracket);
562 
563  LastOpenBracket = Seg;
564 
565  *Current = Seg;
566 
567  Current = &(Seg->Contents);
568 
569  return 0;
570 }
char TagMode
Definition: GIS.cpp:109
std::string Sep
Definition: GSP.cpp:39
int BuildTag()
Definition: GIS.cpp:530
GisToken * Contents
Definition: GIS.h:225
GisToken * LastOpenBracket
Definition: GIS.cpp:107
GisToken ** Current
Definition: GIS.cpp:107
#define DEBUGLOG2(level,...)
Definition: debug.h:241
int BeginSequenz ( )

Definiert in Zeile 585 der Datei GIS.cpp.

Benutzt BuildTag(), GisSequenz::Contents, Current, DEBUGLOG2, LastOpenBracket und TagMode.

Wird benutzt von DoParse().

586 {
587  DEBUGLOG2(gmnfile,("["));
588 
589  if ( TagMode ) BuildTag();
590 
591  GisSequenz *Seq = new GisSequenz(0, Sep, LastOpenBracket);
592 
593  LastOpenBracket = Seq;
594 
595  *Current = Seq;
596 
597  Current = &(Seq->Contents);
598 
599  return 0;
600 }
char TagMode
Definition: GIS.cpp:109
std::string Sep
Definition: GSP.cpp:39
int BuildTag()
Definition: GIS.cpp:530
GisToken * LastOpenBracket
Definition: GIS.cpp:107
GisToken ** Current
Definition: GIS.cpp:107
#define DEBUGLOG2(level,...)
Definition: debug.h:241
GisToken * Contents
Definition: GIS.h:179
virtual void mutabor::BoxClass::ChangedCallback::BoxChangedAction ( int  flags)
pure virtual
virtual void mutabor::BoxClass::ChangedCallback::BoxChangedAction ( const char *  action)
inlinevirtual

Erneute Implementation in MutTextBox.

Definiert in Zeile 234 der Datei Box.h.

234 {}
mutabor::BoxClass::BoxClass ( int  id = -1)
protected

Definiert in Zeile 810 der Datei Box.cpp.

Benutzt mutabor::BoxClass::AppendToBoxList(), mutabor::hidden::mutabor_initialize_box(), mutabor::BoxClass::set_routefile_id() und mutabor::hidden::mutabor_box_type::userdata.

810  : box(NULL),
811  session_id(),
813  routes(),
814  open (false),
815  current_logic(),
819  updateflags(0),
820  callbacks(),
822  mutex(),
823  logic_timing(-1),
824  loop_timeout(500000),
825  loopguard()
826  {
827  AppendToBoxList(this);
828  box = (mutabor_box_type *) malloc(sizeof(mutabor_box_type));
829  if (!box) return;
831  box->userdata = this;
832  set_routefile_id(id);
833  }
int logic_timing
Definition: Box.h:835
CompileCallback * current_compile_callback
Definition: Box.h:832
std::string current_logic
Definition: Box.h:815
watchdog< Box > * loopguard
Definition: Box.h:838
mutint64 loop_timeout
Definition: Box.h:837
void mutabor_initialize_box(mutabor_box_type *box, int id)
Definition: box.cpp:136
virtual void set_routefile_id(int id)
Definition: Box.cpp:97
struct mutabor_box_type * box
Definition: Box.h:810
int current_key_tonesystem
Definition: Box.h:817
struct mutabor::hidden::mutabor_box_type mutabor_box_type
Mutabor box type.
unsigned int updateflags
Definition: Box.h:819
Mutex mutex
Definition: Box.h:834
std::list< ChangedCallback * > callbacks
Definition: Box.h:820
idtype< BoxClass > session_id
Definition: Box.h:811
static void AppendToBoxList(Box dev)
Definition: Box.cpp:280
routeListType routes
Definition: Box.h:813
int current_key_logic
Definition: Box.h:818
int routefile_id
Definition: Box.h:812
std::string current_tonesystem
Definition: Box.h:816
void mutabor::BoxClose ( )
inline

Definiert in Zeile 993 der Datei Box.h.

Benutzt mutabor::BoxClass::GetBoxList().

994  {
995  const BoxListType& list = BoxClass::GetBoxList();
996  for (BoxListType::const_iterator b = list.begin();
997  b != list.end(); b++)
998  (*b)->Close();
999  }
std::vector< Box > BoxListType
Definition: Box.h:123
mutabor::BoxFactory::BoxFactory ( size_t  id = 0)

Definiert in Zeile 950 der Datei Box.cpp.

Benutzt mutabor::BoxFactory::factories und UNREACHABLEC.

Wird benutzt von mutaborGUI::GUIBoxFactory::CreateBoxShape().

950  {
951  if (type < 0) type = 0;
952  if (factories.size() <= type) {
953  factories.resize(type+1,NULL);
954  }
955  if (factories[type]) {
956  UNREACHABLEC;
957  return;
958  }
959  factories[type] = this;
960 
961  }
static factorylist factories
Definition: Box.h:943
#define UNREACHABLEC
Definition: debug.h:256
mutabor::BoxClass::BoxLock::BoxLock ( BoxClass b)
inline

Definiert in Zeile 783 der Datei Box.h.

Benutzt mutabor::hidden::mutabor_box_flags::auto_reset_break_logic, mutabor::BoxClass::box, mutabor::hidden::mutabor_box_flags::break_logic, mutabor::hidden::mutabor_box_type::flags und mutASSERT.

783  :ScopedLock(b->mutex),
784  box(b) {
785  mutASSERT(IsOk());
786  if (b && b->box && b->box->flags.auto_reset_break_logic)
787  b->box->flags.break_logic = 0;
788  }
wxMutexLocker ScopedLock
Definition: thread.h:57
#define mutASSERT(expr)
int BuildTag ( )

Definiert in Zeile 530 der Datei GIS.cpp.

Benutzt Clear(), Current, DEBUGLOG2, LastPara, Para, Tag(), TagMode, TagName und TagSep.

Wird benutzt von BeginSegment(), BeginSequenz(), Comma(), EndRange(), EndSegment(), EndSequenz(), NextSequenz(), Note() und Tag().

531 {
532  DEBUGLOG2(gmnfile,("TagName.len %d, '%s'"),(int)TagName.length(),TagName.c_str());
533  GisTag *Tag = new GisTag(TagName, Para, TagSep);
534  *Current = Tag;
535  Current = &(Tag->Next);
536  Clear(&TagName);
537  Clear(&TagSep);
538  Para = 0;
539  LastPara = 0;
540  TagMode = 0;
541  return 0;
542 }
char TagMode
Definition: GIS.cpp:109
int Tag(const std::string &tagName)
Definition: GIS.cpp:726
GisToken * Para
Definition: GIS.cpp:112
std::string TagSep
Definition: GIS.cpp:111
std::string TagName
Definition: GIS.cpp:110
Definition: GIS.h:266
GisToken * LastPara
Definition: GIS.cpp:112
GisToken ** Current
Definition: GIS.cpp:107
#define DEBUGLOG2(level,...)
Definition: debug.h:241
void Clear(std::string *s)
Definition: GIS.cpp:493
mutabor::BoxClass::ChangedCallback::ChangedCallback ( Box b)
inline

Definiert in Zeile 218 der Datei Box.h.

218  :box(b) {
219  if (b) b->Register(this);
220  }
mutabor::ChannelData::ChannelData ( int  sound = -1)
inline

Definiert in Zeile 106 der Datei Device.h.

107  :controller(128,-1),
108  controller_changed(256,-1),
109  first_unchanged(0),
110  looped(false),
111  data_is_rpn(true),
112  Sound(sound),
113  bank_coarse(-1),
114  bank_fine(-1),
115  bend(0)
116  {
117  /*
118  controller[midi::HOLD_PEDAL_ON_OFF] = sustain;
119  if (sustain != 0) {
120  controller_changed[first_unchanged]
121  = midi::HOLD_PEDAL_ON_OFF;
122  first_unchanged++;
123  }
124  */
125  }
size_t first_unchanged
Definition: Device.h:493
controller_vector controller
Definition: Device.h:491
uint8_t bank_fine
Definition: Device.h:498
controller_vector controller_changed
Definition: Device.h:492
uint8_t bank_coarse
Definition: Device.h:497
int CharIn ( char  c,
const char *  s 
)
inline

Definiert in Zeile 89 der Datei GSP.cpp.

Benutzt DEBUGLOG2.

Wird benutzt von DoParse(), GetSep() und ReadNote().

90 {
91  DEBUGLOG2(other,("'%c' is in '%s' at position %d, returning %d"),
92  c, s, (int)(strchr(s, c)-s), (int)(strchr(s, c) != NULL));
93  return strchr(s, c) != NULL;
94 }
#define DEBUGLOG2(level,...)
Definition: debug.h:241
template<class I = InputDevice, class O = OutputDevice, class B = Box>
char mutabor::TRouteClass< I, O, B >::Check ( int  i)
inline

Definiert in Zeile 158 der Datei Route.h.

158  {
159  return (IFrom <= i && i <= ITo);
160  }
void ChordNote::CheckCloseAlter ( )

Definiert in Zeile 860 der Datei GIS_Head.cpp.

Benutzt CNAlter und Sep.

Wird benutzt von ChordNote::CheckClose().

861 {
862  if ( Status & CNAlter ) {
863  std::string s = "";
864  std::string *Sep = LastSep;
865 
866  if ( !LastSep ) Sep = &s;
867 
868  AddGis(new GisTagEnd((GisTagBegin*)*AlterBegin, *Sep));
869 
870 
871  if ( Sep->size() ) {
872  Sep->clear();
873  }
874 
875 #if 0
876  if ( *Sep.length() ) {
877  free(*Sep);
878  *Sep = 0;
879  }
880 
881 #endif
882  Status -= CNAlter;
883 
884  Pitch = 0;
885  }
886 }
std::string * LastSep
Definition: GIS_Head.h:445
GisToken ** AlterBegin
Definition: GIS_Head.h:442
std::string Sep
Definition: GSP.cpp:39
char Status
Definition: GIS_Head.h:441
void AddGis(GisToken *token)
Definition: GIS_Head.cpp:852
double Pitch
Definition: GIS_Head.h:448
Definition: GIS.h:387
#define CNAlter
Definition: GIS_Head.h:422
void ChordNote::CheckCloseTie ( )

Definiert in Zeile 888 der Datei GIS_Head.cpp.

Benutzt Sep und TTtie.

Wird benutzt von ChordNote::CheckClose().

889 {
890  if ( nTie > 1 ) {
891  // close alter
892  CheckCloseAlter();
893  // insert begin range
894  *TieBegin = new GisTagBegin(TTtie, 0, 0, "(", *TieBegin);
895  // add end range
896  std::string s = "";
897  std::string *Sep = LastSep;
898 
899  if ( !LastSep ) Sep = &s;
900 
901  AddGis(new GisTagEnd((GisTagBegin*)*TieBegin, *Sep));
902 
903 #ifdef WX
904  if ( Sep->size() ) {
905  *Sep="";
906  }
907 
908 #else
909  if ( *Sep ) {
910  free(*Sep);
911  *Sep = 0;
912  }
913 
914 #endif
915  }
916 
917  TieBegin = Cursor;
918 
919  nTie = 0;
920 }
GisToken ** Cursor
Definition: GIS_Head.h:435
std::string * LastSep
Definition: GIS_Head.h:445
void CheckCloseAlter()
Definition: GIS_Head.cpp:860
std::string Sep
Definition: GSP.cpp:39
#define TTtie
Definition: GIS.h:78
GisToken ** TieBegin
Definition: GIS_Head.h:443
void AddGis(GisToken *token)
Definition: GIS_Head.cpp:852
Definition: GIS.h:387
int nTie
Definition: GIS_Head.h:444
int CheckError ( int  nr)

Definiert in Zeile 157 der Datei GSP.cpp.

Benutzt GspError, GspErrorLine, GspErrorLineNr, GspErrorPos, PossibleErrorLine, PossibleErrorLineNr und PossibleErrorPos.

Wird benutzt von DoParse(), GspParse(), ReadNote(), ReadParaNumber(), ReadParaStr() und ReadTag().

158 {
159  if ( !nr ) return 0; // no error
160  if ( GspError ) return GspError;
161  GspError = nr;
165  return nr;
166 }
int GspErrorPos
Definition: GSP.cpp:30
int GspError
Definition: GSP.cpp:32
std::string GspErrorLine
Definition: GSP.cpp:31
int PossibleErrorLineNr
Definition: GSP.cpp:35
std::string PossibleErrorLine
Definition: GSP.cpp:37
int PossibleErrorPos
Definition: GSP.cpp:36
int GspErrorLineNr
Definition: GSP.cpp:29
bool OutputMidiFileTest::CheckOut ( std::string  s,
int  line,
const char *  file 
)

Definiert in Zeile 4771 der Datei DevMidFTest.cpp.

Benutzt DEBUGLOG, OutputMidiFileTest::out, mutabor::OutputMidiFile::Save() und StreamToHex().

Wird benutzt von OutputMidiFileTest::testBatchPlay1().

4771  {
4772  std::stringstream stream( std::ios_base::in | std::ios_base::out |
4773  std::ios_base::binary );
4774  out->Save(stream);
4775  std::string tmp = StreamToHex(stream);
4776  bool retval = (tmp == s);
4777  if (!retval) {
4778  DEBUGLOG(always,"\n\
4779 %s:%d: Stream check failed.\n\
4780 \n\
4781 Expected:\n\
4782 |-------------------\n\
4783 %s\
4784 |-------------------\n\
4785 \n\
4786 Got:\n\
4787 |-------------------\n\
4788 %s\
4789 |-------------------\n\
4790 \n\
4791 ",
4792  file,line,s.c_str(),tmp.c_str());
4793  }
4794  return retval;
4795 }
#define DEBUGLOG(level,...)
Definition: debug.h:240
virtual void Save(tree_storage &config)
Save current device settings in a tree storage.
Definition: DevMidF.cpp:253
std::string StreamToHex(std::istream &buf)
Definition: debug.cpp:356
mutabor::OutputMidiFile * out
Definition: DevMidFTest.h:239
ChordNote::ChordNote ( ChordNote first)

Definiert in Zeile 782 der Datei GIS_Head.cpp.

Benutzt ChordNote::Boss, ChordNote::BossPos, mutabor::CurrentTime und GMN_NO_KEY.

783 {
784  // copy data from first
785  Boss = first->Boss;
786  BossPos = first->BossPos;
787  Next = 0;
788  Data = 0;
789  Cursor = &Data;
791 
792  if ( TotalTime )
793  AddGis(new GisNote("_", "", 0, TotalTime, " ", 0));
794 
795  CurrentTime = 0;
796 
797  Boss->ChordPos = Boss->Cursor;
798 
799  Status =0;
800 
801  TieBegin = 0;
802 
803  nTie = 0;
804 
805  LastSep = 0;
806 
807  InstrId = -1;
808 
809  Taste = GMN_NO_KEY;
810 
811  Key = GMN_NO_KEY;
812 
813  Pitch = 0;
814 }
GisToken ** Cursor
Definition: GIS_Head.h:435
int Taste
Definition: GIS_Head.h:446
std::string * LastSep
Definition: GIS_Head.h:445
#define GMN_NO_KEY
Definition: GIS.h:89
GisToken ** ChordPos
Definition: GIS_Head.h:323
GisWriteHead * Boss
Definition: GIS_Head.h:436
GisToken * Data
Definition: GIS_Head.h:434
char Status
Definition: GIS_Head.h:441
mutabor::frac TotalTime
Definition: GIS_Head.h:438
int Key
Definition: GIS_Head.h:447
GisToken ** TieBegin
Definition: GIS_Head.h:443
void AddGis(GisToken *token)
Definition: GIS_Head.cpp:852
int InstrId
Definition: GIS_Head.h:440
GisToken ** Cursor
Definition: GIS_Head.h:319
GisToken ** BossPos
Definition: GIS_Head.h:439
double Pitch
Definition: GIS_Head.h:448
ChordNote * Next
Definition: GIS_Head.h:433
Definition: GIS.h:423
mutabor::frac TotalTime
Definition: GIS_Head.h:320
int nTie
Definition: GIS_Head.h:444
mutabor::frac CurrentTime
Definition: GIS_Head.h:437
void Clear ( std::string *  s)

Definiert in Zeile 493 der Datei GIS.cpp.

Wird benutzt von BeginRange(), BuildTag(), MutTextBox::GetKeys(), MutTextBox::GetToneSystem(), mutaborGUI::MutEditFile::OnEditClear() und UnRavel().

494 {
495  *s = "";
496 }
void mutabor::InputDeviceClass::current_keys_type::clear ( )
inline

Definiert in Zeile 1102 der Datei Device.h.

Benutzt mutabor::InputDeviceClass::current_keys_type::map.

Wird benutzt von mutabor::InputDeviceClass::DoSilenceKeys().

1102  {
1103  map.clear();
1104  }
static void mutabor::BoxClass::ClearBoxList ( )
inlinestatic

Definiert in Zeile 374 der Datei Box.h.

Benutzt mutabor::BoxClass::boxList und mutASSERT.

Wird benutzt von mutaborGUI::MutRouteWnd::CmRouteLoad(), IMPLEMENT_APP(), compat30::LoadRoutes() und RouteTest::testDestroyAll().

374  {
375  while (!boxList.empty()) {
376 #ifdef DEBUG
377  Box d = boxList.front();
378 #endif
379  boxList.front()->Destroy();
380 #ifdef DEBUG
381  mutASSERT(boxList.empty() ||
382  d != boxList.front());
383 #endif
384  }
385  }
static listtype boxList
Definition: Box.h:805
#define mutASSERT(expr)
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:121
template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
static void mutabor::CommonTypedDeviceAPI< T, P, L >::ClearDeviceList ( )
inlinestatic

Definiert in Zeile 797 der Datei Device.h.

797  {
798  while (!deviceList.empty()) {
799 #ifdef DEBUG
800  DevicePtr d = deviceList.front();
801 #endif
802  deviceList.front()->Destroy();
803 #ifdef DEBUG
804  mutASSERT(deviceList.empty() ||
805  d != deviceList.front());
806 #endif
807  }
808  }
#define mutASSERT(expr)
static listtype deviceList
Definition: Device.h:694
template<class I = InputDevice, class O = OutputDevice, class B = Box>
static void mutabor::TRouteClass< I, O, B >::ClearRouteList ( )
inlinestatic

Definiert in Zeile 443 der Datei Route.h.

443  {
444  TRACET(thistype);
445  Route d;
446  while (!routeList.empty()) {
447  mutASSERT(intrusive_ptr_get_refcount(d.get()) <= 1);
448  TRACET(thistype);
449  d = routeList.front();
450  TRACET(thistype);
451  d->Destroy();
452 
453  mutASSERT(routeList.empty() ||
454  d != routeList.front());
455  }
456  mutASSERT(intrusive_ptr_get_refcount(d.get()) <= 1);
457  TRACET(thistype);
458  }
#define mutASSERT(expr)
static routeListType routeList
Definition: Route.h:472
#define TRACET(type)
Definition: debug.h:247
TRouteClass thistype
Definition: Route.h:113
size_t intrusive_ptr_get_refcount(intrusive_ptr_T *obj)
boost::intrusive_ptr< TRouteClass > Route
Definition: Route.h:119
void mutabor::BoxClass::Close ( )
inline

Definiert in Zeile 423 der Datei Box.h.

Benutzt mutabor::BoxClass::DoClose() und mutabor::BoxClass::open.

Wird benutzt von mutabor::BoxClass::Destroy().

423  {
424  BoxLock lock(this);
425  if (open)
426  DoClose();
427  open = false;
428  }
virtual void DoClose()
Definition: Box.cpp:405
virtual void mutabor::Device::Close ( )
pure virtual
virtual void mutabor::InputDeviceClass::Close ( )
inlinevirtual

Implementiert mutabor::Device.

Erneute Implementation in mutabor::InputMidiFile, mutabor::InputMidiPort, mutabor::InputGis, mutabor::CommonFileInputDevice, myDevice, myDevice, myDevice und myDevice.

Definiert in Zeile 1121 der Datei Device.h.

Benutzt mutabor::InputDeviceClass::Stop().

Wird benutzt von CommonMidiInputTest::testGlobalPanic() und CommonMidiInputTest::testPanic().

1121  {
1122  Stop();
1123  }
virtual void Stop()
Stop playback or recording of the device.
Definition: Device.h:1124
void mutabor::BoxClass::CloseAll ( )
static

Close all boxes.

This function deactivates all boxes.

Definiert in Zeile 477 der Datei Box.cpp.

Wird benutzt von mutabor::OpenAll().

477  {
478  BoxClass_CallClose callclose;
479  std::for_each(boxList.begin(),boxList.end(),callclose);
480  }
static listtype boxList
Definition: Box.h:805
void CloseAllSubs ( GisWriteHead head)

Definiert in Zeile 1496 der Datei GIS_Head.cpp.

Benutzt GisWriteHead::CloseSubs(), GisWriteHead::CommaAtEnd, GisWriteHead::Cursor, GisWriteHead::CutOut(), GisWriteHead::Data, GetGisType(), GTSegment, h, GisWriteHead::Next, GisWriteHead::nSub und GisWriteHead::RemoveComma().

Wird benutzt von mutabor::OutputGis::Close().

1497 {
1498  while ( 1 ) {
1499  // search the lowest boss
1500  GisWriteHead *Boss = 0;
1501 
1502  for (GisWriteHead *H = head; H; H = H->Next)
1503  if ( H->nSub > 0 )
1504  Boss = H;
1505 
1506  if ( !Boss ) break;
1507 
1508  // check for "empty" boss
1509  if ( !Boss->Data && Boss->nSub == 1 ) {
1510  GisWriteHead *h = Boss->Next;
1511  Boss->Data = h->Data;
1512  Boss->nSub = 0;
1513  h->Data = 0;
1514  h->CutOut();
1515  delete h;
1516  continue;
1517  }
1518 
1519  // check for segment
1520  if ( GetGisType(*Boss->Cursor) != GTSegment ) {
1521  if ( Boss->Data && !Boss->CommaAtEnd ) {
1522  *Boss->Cursor = new GisComma(" ", 0);
1523  Boss->Cursor = &((*Boss->Cursor)->Next);
1524  }
1525 
1526  Boss->Data = new GisSegment(Boss->Data, " ", 0);
1527 
1528  GisToken **Cont = Boss->Cursor;
1529 
1530  if ( Boss->Cursor == &Boss->Data )
1531  Cont = 0;
1532 
1533  Boss->Cursor = &Boss->Data;
1534 
1535  Boss->CloseSubs(Cont);
1536  } else
1537  Boss->CloseSubs();
1538  }
1539 
1540  /* // check wether there are parallel heads
1541  if ( head->Next ) */
1542  // remove comma at end
1543  head->RemoveComma();
1544 }
GisReadArtHead * h
Definition: mutgis.cpp:5
Definition: GIS.h:103
char CommaAtEnd
Definition: GIS_Head.h:326
Definition: GIS.h:116
GisWriteHead * CutOut()
Definition: GIS_Head.cpp:1010
Definition: GIS.h:599
GisToken ** Cursor
Definition: GIS_Head.h:319
GisToken * Data
Definition: GIS_Head.h:319
void RemoveComma()
Definition: GIS_Head.cpp:1118
GisWriteHead * Next
Definition: GIS_Head.h:316
GisType GetGisType(GisToken *token)
Definition: GIS.cpp:824
int CloseSubs(GisToken **cont=0)
Definition: GIS_Head.cpp:1138
int GisWriteHead::CloseCurrentToken ( char  insertRest = 1)

Definiert in Zeile 1172 der Datei GIS_Head.cpp.

Benutzt mutabor::CurrentTime, GTComma, GTNote, GTNull, GTParaInt, GTParaReal, GTParaStr, GTSegment, GTSequenz, GTTag, GTTagBegin, GTTagEnd und GTUnknown.

1173 {
1174  if ( ChordNotes ) {
1175  WriteChord();
1176  return 0;
1177  }
1178 
1179  switch ( State() ) {
1180 
1181  case GTNull:
1182  if ( insertRest && CurrentTime ) // write a rest
1183  {
1184  *Cursor = new GisNote("_", "", 0, CurrentTime, " ");
1185  Cursor = &((*Cursor)->Next);
1186  CurrentTime = 0;
1187  }
1188  break;
1189 
1190  case GTUnknown:
1191  return 1; // impossible
1192 
1193  case GTSequenz:
1194  CloseSubs();
1195 
1196  CurrentTime = 0;
1197 
1198  Cursor = &((*Cursor)->Next);
1199 
1200  break;
1201 
1202  case GTSegment:
1203  CloseSubs();
1204 
1205  CurrentTime = 0;
1206 
1207  Cursor = &((*Cursor)->Next);
1208 
1209  break;
1210 
1211  case GTTag:
1212  return 1; // impossible
1213 
1214  case GTTagBegin:
1215  return 1; // impossible
1216 
1217  case GTTagEnd:
1218  return 1; // impossible
1219 
1220  /* case GTNote:
1221  ((GisNote*)(*Cursor))->Duration = CurrentTime;
1222  Cursor = &(*Cursor)->Next;
1223  CurrentTime = frac(0, 1);
1224  // das hier muß anders sein, um mehrere Noten gleichzeitig zu schaffen
1225  break; */
1226 
1227  case GTParaInt:
1228  return 1; // impossible
1229 
1230  case GTParaReal:
1231  return 1; // impossible
1232 
1233  case GTParaStr:
1234  return 1; // impossible
1235  case GTNote:case GTComma:
1236  ;
1237  }
1238 
1239  return 0;
1240 }
Definition: GIS.h:107
ChordNote * ChordNotes
Definition: GIS_Head.h:324
Definition: GIS.h:103
Definition: GIS.h:104
Definition: GIS.h:100
Definition: GIS.h:106
Definition: GIS.h:111
Definition: GIS.h:101
GisType State()
Definition: GIS_Head.h:369
Definition: GIS.h:108
void WriteChord()
Definition: GIS_Head.cpp:1376
GisToken ** Cursor
Definition: GIS_Head.h:319
Definition: GIS.h:423
mutabor::frac CurrentTime
Definition: GIS_Head.h:320
Definition: GIS.h:102
Definition: GIS.h:110
int CloseSubs(GisToken **cont=0)
Definition: GIS_Head.cpp:1138
int CloseFile ( )

Definiert in Zeile 75 der Datei GSP_File.cpp.

Benutzt File.

Wird benutzt von GspParse().

76 {
77  delete File;
78  return 0;
79 }
boost::filesystem::ifstream * File
Definition: GSP_File.cpp:40
int GisWriteHead::CloseSubs ( GisToken **  cont = 0)

Definiert in Zeile 1138 der Datei GIS_Head.cpp.

Benutzt GisWriteHead::Boss, GisWriteHead::CommaAtEnd, GisWriteHead::Cursor, GisWriteHead::CutOut(), GisWriteHead::Data, h, GisWriteHead::ReadyForBoss() und GisWriteHead::RemoveComma().

Wird benutzt von CloseAllSubs().

1139 {
1140  GisWriteHead *h = Next;
1141  GisToken **Cont = &(((GisSegment*)*Cursor)->Contents);
1142 
1143  if ( cont ) Cont = cont;
1144 
1145  while ( h && nSub > 0 && h->Boss == this ) {
1146  h->ReadyForBoss();
1147 
1148  if ( nSub == 1 && h->CommaAtEnd )
1149  h->RemoveComma();
1150 
1151  *Cont = h->Data;
1152 
1153  if ( Data )
1154  Cont = h->Cursor;
1155 
1156  if ( nSub > 1 && !h->CommaAtEnd ) {
1157  *Cont = new GisComma(" ", 0);
1158  Cont = &((*Cont)->Next);
1159  }
1160 
1161  nSub--;
1162 
1163  h->CutOut();
1164  delete h;
1165  h = Next;
1166  }
1167 
1168  return nSub;
1169 }
GisReadArtHead * h
Definition: mutgis.cpp:5
int ReadyForBoss()
Definition: GIS_Head.cpp:1070
char CommaAtEnd
Definition: GIS_Head.h:326
Definition: GIS.h:116
GisWriteHead * CutOut()
Definition: GIS_Head.cpp:1010
Definition: GIS.h:599
GisToken ** Cursor
Definition: GIS_Head.h:319
GisToken * Data
Definition: GIS_Head.h:319
void RemoveComma()
Definition: GIS_Head.cpp:1118
GisWriteHead * Next
Definition: GIS_Head.h:316
GisWriteHead * Boss
Definition: GIS_Head.h:317
int CmpNote ( GisToken note1,
GisToken note2 
)

Definiert in Zeile 765 der Datei GIS_Head.cpp.

Benutzt GTNote, NOTE1, NOTE2, StrCmp() und GisToken::Type().

Wird benutzt von ChordNote::SetNoteOff().

766 {
767  if ( note1->Type() != GTNote || note2->Type() != GTNote )
768  return 0;
769 
770  if ( StrCmp(NOTE1->Name, NOTE2->Name)
771  || StrCmp(NOTE1->Accedentials, NOTE2->Accedentials)
772  || NOTE1->Octave != NOTE2->Octave )
773  return 0;
774 
775  return 1;
776 
777 }
Definition: GIS.h:107
int StrCmp(const std::string &s1, const std::string &s2)
Definition: GIS_Head.cpp:745
#define NOTE2
Definition: GIS_Head.cpp:742
#define NOTE1
Definition: GIS_Head.cpp:741
virtual GisType Type() const
Definition: GIS.h:136
int Comma ( )

Definiert in Zeile 786 der Datei GIS.cpp.

Benutzt BuildTag(), Current, DEBUGLOG2 und TagMode.

Wird benutzt von DoParse() und GisWriteHead::ReadyForBoss().

787 {
788  DEBUGLOG2(gmnfile,(","));
789 
790  if ( TagMode ) BuildTag();
791 
792  *Current = new GisComma(Sep, 0);
793 
794  Current = &((*Current)->Next);
795 
796  return 0;
797 }
char TagMode
Definition: GIS.cpp:109
std::string Sep
Definition: GSP.cpp:39
int BuildTag()
Definition: GIS.cpp:530
Definition: GIS.h:599
GisToken ** Current
Definition: GIS.cpp:107
#define DEBUGLOG2(level,...)
Definition: debug.h:241
template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
mutabor::CommonTypedDeviceAPI< T, P, L >::CommonTypedDeviceAPI ( )
inlineprotected

Definiert in Zeile 696 der Datei Device.h.

696  :Device() {
697  AppendToDeviceList(static_cast<thistype *>(this));
698  }
static void AppendToDeviceList(DevicePtr dev)
Definition: Device.cpp:292
Device(const std::string &name="", int id=-1)
Definition: Device.h:655
template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
mutabor::CommonTypedDeviceAPI< T, P, L >::CommonTypedDeviceAPI ( const std::string &  name,
int  id = -1 
)
inlineprotected

Definiert in Zeile 700 der Datei Device.h.

701  :Device(name, id) {
702  AppendToDeviceList(static_cast<thistype *>(this));
703  }
static void AppendToDeviceList(DevicePtr dev)
Definition: Device.cpp:292
Device(const std::string &name="", int id=-1)
Definition: Device.h:655
bool mutabor::BoxClass::Compile ( CompileCallback callback,
const char *  logic 
)

Definiert in Zeile 691 der Datei Box.cpp.

Benutzt _mut, mutabor::hidden::mutabor_scanner_data::anzahl_eingelesene_zeichen, mutabor::hidden::expand_decition_tree(), mutabor::hidden::mutabor_box_type::file, mutabor::BoxClass::get_errors(), intervall_list_laenge(), mutabor::hidden::mutabor_logic_parsed::list_of_intervalle, mutabor::hidden::mutabor_logic_parsed::list_of_logiken, mutabor::hidden::mutabor_logic_parsed::list_of_toene, mutabor::hidden::mutabor_logic_parsed::list_of_tonsysteme, mutabor::hidden::mutabor_logic_parsed::list_of_umstimmungen, mutabor::hidden::loesche_syntax_speicher(), mutabor::hidden::logik_list_laenge(), mutabor::hidden::mutabor_programm_einlesen(), mutabor::BoxClass::CompileCallback::Refresh(), mutabor::hidden::mutabor_box_type::scanner, mutabor::BoxClass::CompileCallback::SetMessage(), mutabor::BoxClass::CompileCallback::SetStatus(), mutabor::hidden::ton_list_laenge(), mutabor::hidden::tonsystem_list_laenge(), mutabor::hidden::umstimmungs_list_laenge() und weiter_gehts_nach_compilerfehler.

691  {
692  set_callback callback_holder(this,callback);
693  if (!setjmp(weiter_gehts_nach_compilerfehler)) {
695  // init_yylex ();
696 
698 
699  if (callback) {
700  callback->SetStatus(logik_list_laenge(box->file->list_of_logiken),
706 
707  // show_line_number(-1);
708 
709  callback->SetStatus(_mut("Generating tables"));
710  callback->Refresh();
711  }
712 
714 
715 
716  if (callback) {
717  callback->SetStatus(_mut("Translation successful"));
718  callback->SetMessage(_mut("No error occured."));
719  callback->Refresh();
720  }
721  return true;
722  } else {
723  //show_line_number(-1);
724  if (callback) {
725  callback->SetStatus(_mut("Translation interrupted."));
726  callback->SetMessage(get_errors());
727  callback->Refresh();
728  }
729 
730  return false;
731  }
732  }
int loesche_syntax_speicher(mutabor_box_type *box)
Definition: Hilfs.cpp:279
int umstimmungs_list_laenge(const struct umstimmung *list)
Definition: Parser.cpp:94
virtual const std::string get_errors()
Return the collected errors and warnings.
Definition: Box.h:742
int logik_list_laenge(const struct logik *list)
Definition: Parser.cpp:104
void expand_decition_tree(mutabor_box_type *box)
Definition: TabGen.cpp:1324
#define _mut
Definition: Defs.h:117
struct tonsystem * list_of_tonsysteme
Definition: Parser.h:105
struct mutabor_box_type * box
Definition: Box.h:810
struct intervall * list_of_intervalle
Definition: Parser.h:103
jmp_buf weiter_gehts_nach_compilerfehler
Definition: gmut.cpp:28
struct mutabor_logic_parsed * file
Definition: box.h:155
struct mutabor_scanner_data * scanner
Definition: box.h:154
int tonsystem_list_laenge(const struct tonsystem *list)
Definition: Parser.cpp:84
bool mutabor_programm_einlesen(mutabor_box_type *box, const char *logic)
Definition: Parser.cpp:607
int intervall_list_laenge(struct intervall *list)
Definition: Interval.c:132
struct umstimmung * list_of_umstimmungen
Definition: Parser.h:106
int ton_list_laenge(const struct ton *list)
Definition: Parser.cpp:73
void mutabor::BoxClass::compile_callback ( struct mutabor_box_type b,
int  line_number 
)
static

Definiert in Zeile 886 der Datei Box.cpp.

Benutzt mutabor::BoxClass::current_compile_callback und mutabor::BoxClass::CompileCallback::SetLine().

886  {
887  BoxClass * box =
888  reinterpret_cast<BoxClass *>(b -> userdata);
889  if (box->current_compile_callback) {
890  box->current_compile_callback->SetLine(line_number);
891  }
892  }
struct mutabor_box_type * box
Definition: Box.h:810
BoxClass(int id=-1)
Definition: Box.cpp:810
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::Controller ( int  controller,
int  value,
size_t  make_unique 
)
inline

Definiert in Zeile 265 der Datei Route.h.

267  {
268  if (Out)
269  Out->Controller(session_id,
270  controller,
271  value,
272  make_unique);
273  }
idtype< TRouteClass< I, O > > session_id
Definition: Route.h:473
OutputDevice Out
Definition: Route.h:463
void mutabor::OutputDeviceClass::Controller ( int  mutabor_channel,
int  controller,
int  value,
size_t  id 
)
inline

Definiert in Zeile 872 der Datei Device.h.

Benutzt mutabor::OutputDeviceClass::do_Controller() und mutabor::OutputDeviceClass::write_lock.

875  {
876  ScopedLock lock(write_lock);
877  do_Controller(mutabor_channel,
878  controller,
879  value,
880  id);
881  }
virtual void do_Controller(int mutabor_channel, int controller, int value, size_t id)=0
wxMutexLocker ScopedLock
Definition: thread.h:57
TagList * Copy ( TagList list)

Definiert in Zeile 438 der Datei GIS_Head.cpp.

Benutzt TagListData::Data, TagListData::Next und TagListData::Tag.

Wird benutzt von GisReadArtHead::GisReadArtHead() und mutaborGUI::MutEditFile::OnEditCopy().

439 {
440  if ( !list ) return 0;
441 
442  TagList *List = new TagList;
443 
444  List->Next = 0;
445 
446  List->Tag = list->Tag;
447 
448  List->Data = list->Data;
449 
450  return List;
451 }
struct TagListData * Next
Definition: GIS_Head.h:147
GisTag * Tag
Definition: GIS_Head.h:148
struct TagListData TagList
union TagListData::data Data
GisToken * CopyPara ( GisToken para)

Definiert in Zeile 867 der Datei GIS.cpp.

Benutzt GisToken::Copy() und GisToken::Next.

Wird benutzt von GisTag::Copy() und GisTagBegin::Copy().

869 {
870  GisToken *C = 0;
871  GisToken **Cursor = &C;
872 
873  while ( para ) {
874  *Cursor = para->Copy();
875  Cursor = &(*Cursor)->Next;
876  para = para->Next;
877  }
878 
879  return C;
880 }
virtual GisToken * Copy()
Definition: GIS.h:141
Definition: GIS.h:116
GisToken * Next
Definition: GIS.h:120
void ChordNote::CountOnTime ( mutabor::frac  dTime)

Definiert in Zeile 816 der Datei GIS_Head.cpp.

Benutzt mutabor::CurrentTime.

818 {
819  CurrentTime += dTime;
820  TotalTime += dTime;
821 
822  if ( Next ) Next->CountOnTime(dTime);
823 }
void CountOnTime(mutabor::frac dTime)
Definition: GIS_Head.cpp:816
mutabor::frac TotalTime
Definition: GIS_Head.h:438
ChordNote * Next
Definition: GIS_Head.h:433
mutabor::frac CurrentTime
Definition: GIS_Head.h:437
template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::Create ( InputDevice in,
OutputDevice out,
RouteType  type = RTall,
int  iFrom = -1,
int  iTo = -1,
Box  box = NULL,
bool  active = false,
int  oFrom = -1,
int  oTo = -1,
bool  oNoDrum = true 
)
inlineprotected

Definiert in Zeile 189 der Datei Route-inlines.h.

Benutzt mutabor::connect(), DEBUGLOG und intrusive_ptr_get_refcount().

Wird benutzt von mutabor::TRouteClass< InputDevice, OutputDevice, Box >::TRouteClass().

199  {
200  DEBUGLOG (smartptr, "Route %p (%d)" ,
201  (void*)this,
202  (int)intrusive_ptr_get_refcount(this));
203  DEBUGLOG (smartptr, "input device %p (%d)" ,
204  (void*)in.get(),
205  (int)intrusive_ptr_get_refcount(in.get()));
206  DEBUGLOG (smartptr, "output device %p (%d)" ,
207  (void*)out.get(),
208  (int)intrusive_ptr_get_refcount(out.get()));
209  Route self(this);
210  if (in)
211  connect(self,in);
212  else
213  In.reset();
214  if (out)
215  connect(self,out);
216  else
217  Out.reset();
218  Type = type;
219  IFrom = iFrom;
220  ITo = iTo;
221  this->box = box;
222  Active = active;
223  OFrom = oFrom;
224  OTo = oTo;
225  ONoDrum = oNoDrum;
226  }
InputDevice In
Definition: Route.h:464
RouteType Type
Definition: Route.h:480
#define DEBUGLOG(level,...)
Definition: debug.h:240
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
OutputDevice Out
Definition: Route.h:463
size_t intrusive_ptr_get_refcount(intrusive_ptr_T *obj)
boost::intrusive_ptr< TRouteClass > Route
Definition: Route.h:119
static Route mutabor::RouteFactory::Create ( )
inlinestatic

Creates a generic route.

This functions creates a route object on the heap and returns a smart pointer to it. This route will not be preconfigured.

Rückgabe
Route smart pointer to the newly created route

Definiert in Zeile 595 der Datei Route.h.

Benutzt mutabor::RouteFactory::DoCreate() und mutabor::RouteFactory::factory.

Wird benutzt von mutaborGUI::MutBoxShape::AddChannel(), compat30::LoadRoutes(), mutabor::TRouteClass< I, O, B >::LoadRoutes(), CommonMidiOutputTest::setUp(), CommonMidiInputTest::setUp(), OutputMidiFileTest::setUp(), InputMidiFileTest::testAfterTouch(), InputMidiFileTest::testAllControllerOff(), InputMidiFileTest::testBankSelect(), InputMidiFileTest::testBatchPlay1(), InputMidiFileTest::testBoxMidiIn(), InputMidiFileTest::testBug019010(), InputMidiFileTest::testBug019010_2(), GUIRouteTest::testConnect(), InputMidiFileTest::testControllerPlay(), RouteTest::testDestroyAll(), InputMidiFileTest::testRpnNrpn() und InputMidiFileTest::testSysEx().

595  {
596  if (factory)
597  return factory->DoCreate();
598  else
599  BOOST_THROW_EXCEPTION(RouteFactoryNotSet());
600  return NULL;
601  }
virtual RouteClass * DoCreate() const __attribute__((malloc))
Creates a generic route.
Definition: Route.cpp:550
static RouteFactory * factory
Pointer to the current factory.
Definition: Route.h:743
Route mutabor::RouteFactory::Create ( InputDevice in,
OutputDevice out,
RouteType  type = RTall,
int  iFrom = -1,
int  iTo = -1,
Box  box = NULL,
bool  active = false,
int  oFrom = -1,
int  oTo = -1,
bool  oNoDrum = true 
)
inlinestatic

Creates a preconfigured route according to the given type.

This functions creates a route object on the heap and returns a smart pointer to it. This route will be preconfigured according the data provided in the arguments.

Parameter
inInputDevice& Reference to a smart pointer for the input device where the route starts.
outOutputDevice& End point of the route.
typeRouteType Type of the input filter. See RouteType for more information.
iFromstart of the range for the input filter. Its meaning depends on the input filter type.
iToend of the range for the input filter. Its meaning depends on the input filter type.
boxbox to be used. Values less than 0 indicate a pass through route or a GMN box.
activeindicates whether the events on the route may change the tuning of the box. Regardless of this setting the box referenced by the box parameter will influence the tuning of the events in this route.
oFromStart of the range of the output filter (will be interpreted by the output device.
oToEnd of the reange of the output fileter (will be interpreted by the output device
oNoDrumOn MIDI like devices avoid the channel usually used for percussion.
Rückgabe
Route created by this function (smart pointer).

Definiert in Zeile 247 der Datei Route-inlines.h.

Benutzt DEBUGLOGTYPE, mutabor::RouteFactory::DoCreate(), mutabor::RouteFactory::factory und intrusive_ptr_get_refcount().

256  {
257 
258  DEBUGLOGTYPE(smartptr,RouteFactory,("input device %p (%d)"),
259  (void *)in.get(),
260  (int)intrusive_ptr_get_refcount(in.get()));
261 
262  DEBUGLOGTYPE(smartptr,RouteFactory,("output device %p (%d)"),
263  (void *)out.get(),
264  (int)intrusive_ptr_get_refcount(out.get()));
265 
266  if (factory) {
267  RouteClass * r = factory->DoCreate(in,
268  out,
269  type,
270  iFrom,
271  iTo,
272  box,
273  active,
274  oFrom,
275  oTo,
276  oNoDrum);
277  DEBUGLOGTYPE(smartptr,
278  RouteFactory,
279  ("Shipping %p from factory"),
280  (void *)r);
281 
282  return r;
283  } else {
284 
285  BOOST_THROW_EXCEPTION( RouteFactoryNotSet());
286 
287 // UNREACHABLECT(RouteFactory);
288  return NULL;
289  }
290 
291  }
#define DEBUGLOGTYPE(level, type,...)
Definition: debug.h:242
virtual RouteClass * DoCreate() const __attribute__((malloc))
Creates a generic route.
Definition: Route.cpp:550
TRouteClass< InputDevice, OutputDevice, Box > RouteClass
Definition: Route.h:546
static RouteFactory * factory
Pointer to the current factory.
Definition: Route.h:743
size_t intrusive_ptr_get_refcount(intrusive_ptr_T *obj)
RouteFactory()
Creates a route Factory.
Definition: Route.cpp:537
static Box mutabor::BoxFactory::Create ( int  type,
int  id = NewBox 
)
inlinestatic

Definiert in Zeile 899 der Datei Box.h.

Benutzt mutabor::Box0, mutabor::BoxFactory::factories, mutASSERT, mutabor::NewBox und UNREACHABLECT.

Wird benutzt von mutaborGUI::MutBoxShape::DoLeftDblClick(), mutabor::BoxClass::GetOrCreateBox(), mutabor::BoxFactory::LoadBoxes(), CommonMidiOutputTest::setUp(), CommonMidiInputTest::setUp(), OutputMidiFileTest::setUp(), InputMidiFileTest::testAfterTouch(), InputMidiFileTest::testAllControllerOff(), InputMidiFileTest::testBankSelect(), InputMidiFileTest::testBatchPlay1(), InputMidiFileTest::testBoxMidiIn(), InputMidiFileTest::testBug019010(), InputMidiFileTest::testBug019010_2(), GUIRouteTest::testConnect(), InputMidiFileTest::testControllerPlay(), BoxTest::testCopyPLay(), RouteTest::testDestroyAll(), BoxTest::testGetNextFreeBox(), BoxTest::testParser(), InputMidiFileTest::testRpnNrpn() und InputMidiFileTest::testSysEx().

899  {
900  if (id == NewBox && type != Box0) {
901  id = type;
902  }
903 
904  if (type < 0) type = 0;
905  mutASSERT(type >= 0);
906  if (factories.size() <=(size_t) type) {
907  BOOST_THROW_EXCEPTION(FactoryNotFound(type));
909  return NULL;
910  }
911  if (!factories[type])
912  BOOST_THROW_EXCEPTION(FactoryNotFound(type));
913  return factories[type]->DoCreateBox(id);
914  }
BoxFactory(size_t id=0)
Definition: Box.cpp:950
#define mutASSERT(expr)
static factorylist factories
Definition: Box.h:943
#define UNREACHABLECT(type)
Definition: debug.h:255
template<class T >
static T mutabor::DeviceFactory::Create ( int  type,
const std::string &  name = "",
MutaborModeType  mode = DeviceStop,
int  id = -1 
)
static
template<>
InputDevice mutabor::DeviceFactory::Create ( int  type,
const std::string &  name,
MutaborModeType  mode,
int  id 
)
inline

Definiert in Zeile 1472 der Datei Device.h.

1475  {
1476  return CreateInput(type,name,mode,id);
1477  }
static InputDevice CreateInput(int type, const std::string &name="", MutaborModeType mode=DeviceStop, int id=-1)
Definition: Device.h:1381
static InputDevice mutabor::DeviceFactory::CreateInput ( int  type,
const std::string &  name = "",
MutaborModeType  mode = DeviceStop,
int  id = -1 
)
inlinestatic

Definiert in Zeile 1381 der Datei Device.h.

Benutzt mutabor::DeviceFactory::factories, mutASSERT und UNREACHABLECT.

Wird benutzt von mutabor::DeviceFactory::LoadInputDevices(), compat30::LoadRoutes(), InputMidiFileTest::setUp(), OutputMidiFileTest::testBatchPlay1(), GUIRouteTest::testConnect() und RouteTest::testDestroyAll().

1384  {
1385  mutASSERT(type >= 0);
1386  if (factories.size() <= (size_t)type) {
1387  BOOST_THROW_EXCEPTION(FactoryNotFound(type));
1389  return NULL;
1390  }
1391  if (!factories[type])
1392  BOOST_THROW_EXCEPTION(FactoryNotFound(type));
1393  return factories[type]->DoCreateInput(name, mode, id);
1394  }
DeviceFactory(size_t id=0)
Definition: Device.cpp:520
#define mutASSERT(expr)
#define UNREACHABLECT(type)
Definition: debug.h:255
static factorylist factories
Definition: Device.h:1437
static OutputDevice mutabor::DeviceFactory::CreateOutput ( int  type,
const std::string &  name = "",
MutaborModeType  mode = DeviceStop,
int  id = -1 
)
inlinestatic

Definiert in Zeile 1364 der Datei Device.h.

Benutzt mutabor::DeviceFactory::factories, mutASSERT und UNREACHABLECT.

Wird benutzt von mutabor::DeviceFactory::LoadOutputDevices(), compat30::LoadRoutes(), OutputMidiFileTest::setUp(), GUIRouteTest::testConnect() und RouteTest::testDestroyAll().

1367  {
1368  /* \todo implement output device record/pause */
1369  mutASSERT(type >= 0);
1370  if (factories.size() <=(size_t) type) {
1371  BOOST_THROW_EXCEPTION(FactoryNotFound(type));
1373  return NULL;
1374  }
1375  if (!factories[type])
1376  BOOST_THROW_EXCEPTION(FactoryNotFound(type));
1377  return factories[type]->DoCreateOutput(name,id);
1378  }
DeviceFactory(size_t id=0)
Definition: Device.cpp:520
#define mutASSERT(expr)
#define UNREACHABLECT(type)
Definition: debug.h:255
static factorylist factories
Definition: Device.h:1437
void GisReadHead::CreateSegmentSubs ( )

Definiert in Zeile 263 der Datei GIS_Head.cpp.

Benutzt GisSegment::Contents, DEBUGLOG, GTComma, GisToken::Next und GisToken::Type().

264 {
265  GisSegment *Seg = (GisSegment*)Cursor;
266  GisToken *Cont = Seg->Contents;
267  std::string id = Id + ("*");
268 #if 0
269  char *id = (char*)malloc(strlen(Id)+2);
270  strcpy(id, Id);
271  strcat(id, "*");
272 #endif
273  nSub = 0;
274 
275  while ( Cont ) // create the single token subs
276  {
277  nSub++;
278  id[Id.length()] = nSub;
279  DEBUGLOG (gmnfile, "Creating Sub for %p (%d, %s)" , (void*)Cont,nSub,id.c_str());
280 
281 // GisReadHead *Sub = // unused variable
282  Build(this, Cont, id, 1);
283  Cont = Cont->Next;
284 
285  while ( Cont ) // read until end or comma
286  {
287 
288  if ( Cont->Type() == GTComma )
289  {
290  Cont = Cont->Next;
291  break;
292  }
293 
294  Cont = Cont->Next;
295  }
296  }
297 }
GisToken * Cursor
Definition: GIS_Head.h:71
#define DEBUGLOG(level,...)
Definition: debug.h:240
Definition: GIS.h:116
GisToken * Next
Definition: GIS.h:120
virtual GisReadHead * Build(GisReadHead *boss, GisToken *cursor, const std::string &id, bool singleToken=false)
Definition: GIS_Head.h:97
GisToken * Contents
Definition: GIS.h:225
Definition: GIS.h:111
int nSub
Definition: GIS_Head.h:70
virtual GisType Type() const
Definition: GIS.h:136
std::string Id
Definition: GIS_Head.h:73
void GisReadHead::CreateSequenzSubs ( )

Definiert in Zeile 300 der Datei GIS_Head.cpp.

Benutzt GisSegment::Contents.

301 {
302  GisSegment *Seq = (GisSegment*)Cursor;
303  std::string id = Id + ("\x01");
304 #if 0
305  char *id = (char*)malloc(strlen(Id)+2);
306  strcpy(id, Id);
307  strcat(id, "\x01");
308 #endif
309  nSub = 1;
310 // GisReadHead *Sub = // unused varible;
311  Build(this, Seq->Contents, id);
312 }
GisToken * Cursor
Definition: GIS_Head.h:71
virtual GisReadHead * Build(GisReadHead *boss, GisToken *cursor, const std::string &id, bool singleToken=false)
Definition: GIS_Head.h:97
GisToken * Contents
Definition: GIS.h:225
int nSub
Definition: GIS_Head.h:70
std::string Id
Definition: GIS_Head.h:73
mutabor::BoxClass::current_tone_entry::current_tone_entry ( )
inline

Definiert in Zeile 501 der Datei Box.h.

mutabor::BoxClass::current_tone_entry::current_tone_entry ( int  ind,
double  p,
size_t  i,
int  c 
)
inline

Definiert in Zeile 502 der Datei Box.h.

GisReadHead * GisReadHead::CutOut ( )

Definiert in Zeile 214 der Datei GIS_Head.cpp.

Benutzt mutASSERT, GisReadHead::Next, GisReadHead::Prev und GisReadHead::PrevPtr.

Wird benutzt von GisReadArtHeadOn(), GisReadHeadOn() und mutabor::InputGis::ReadOn().

215 {
216 #if 0
217 
218  if ( *(PrevPtr) == this ) // first of list
219  {
220  *PrevPtr = Next;
221  } else // normal list postition
222  {
223  (*PrevPtr)->Next = Next;
224  }
225 
226  if ( Next ) Next->PrevPtr = PrevPtr;
227 
228  Next = NULL;
229 
230  PrevPtr = &Prev;
231 
232  return this;
233 
234 #else
235  if ( *(PrevPtr) == this ) // first of list
236  {
237  *PrevPtr = Next;
238 
239  if (Next) {
240  Next->PrevPtr = PrevPtr;
241  Next->Prev = NULL;
242  }
243  }
244  else // normal list postition
245  {
246  Prev->Next = Next;
247 
248  if (Next) {
249  Next->Prev = Prev;
250  mutASSERT(Next->PrevPtr == &(Next->Prev));
251  }
252  }
253 
254  Next = NULL;
255 
256  PrevPtr = &Prev;
257  Prev = NULL;
258  return this;
259 #endif
260 }
GisReadHead ** PrevPtr
Definition: GIS_Head.h:68
GisReadHead * Next
Definition: GIS_Head.h:68
#define mutASSERT(expr)
GisReadHead * Prev
Definition: GIS_Head.h:68
GisWriteHead * GisWriteHead::CutOut ( )

Definiert in Zeile 1010 der Datei GIS_Head.cpp.

Benutzt GisWriteHead::Next und GisWriteHead::Prev.

Wird benutzt von CloseAllSubs() und GisWriteHead::CloseSubs().

1011 {
1012  if ( *(GisWriteHead**)Prev == this ) // first of list
1013  {
1014  *(GisWriteHead**)Prev = Next;
1015  } else // normal list postition
1016  {
1017  Prev->Next = Next;
1018  }
1019 
1020  if ( Next ) Next->Prev = Prev;
1021 
1022  Next = 0;
1023 
1024  Prev = 0;
1025 
1026  return this;
1027 }
GisWriteHead * Next
Definition: GIS_Head.h:316
GisWriteHead * Prev
Definition: GIS_Head.h:316
void mutabor::BoxClass::DeleteNote ( int  note,
size_t  id,
int  channel 
)
inline

Definiert in Zeile 564 der Datei Box.h.

Benutzt mutabor::BoxClass::box und mutabor::hidden::DeleteKey().

564  {
565  scoped_watchdog lock(this);
566  hidden::DeleteKey(box, note, id, channel);
567  }
void DeleteKey(mutabor_box_type *box, int taste, size_t id, size_t channel)
Definition: Execute.cpp:950
struct mutabor_box_type * box
Definition: Box.h:810
template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::Destroy ( )
inlinevirtual

Remove from Route list to be deleted, when it becomes free.

As we are using smart pointers the Route gets deleted, when no pointers point to it any more. As we want to interactively manage routes, We must allow routes to have no input device attached to it. This function explicitely allows to delete the object when it is not used any more.

Definiert in Zeile 229 der Datei Route-inlines.h.

Benutzt debug_destroy_class() und mutabor::disconnect().

230  {
231  Route self(this);
232  debug_destroy_class(this);
233  RemoveFromRouteList(this);
234  if (In) disconnect(self,In);
235  if (Out) disconnect(self,Out);
236  if (box) disconnect(self,box);
237  }
InputDevice In
Definition: Route.h:464
static void RemoveFromRouteList(Route route)
Definition: Route.cpp:296
OutputDevice Out
Definition: Route.h:463
boost::intrusive_ptr< TRouteClass > Route
Definition: Route.h:119
bool disconnect(Route r, OutputDevice out)
Definition: Route-inlines.h:78
void debug_destroy_class(void *ptr, std::string file, int l)
Definition: debug.cpp:117
static void mutabor::RouteFactory::Destroy ( )
inlinestatic

Destroy the route factory.

Call this function instead of deleting the factory.

Definiert in Zeile 644 der Datei Route.h.

Benutzt mutabor::RouteFactory::factory.

644  {
645  if (factory)
646  delete factory;
647  else
648  BOOST_THROW_EXCEPTION( RouteFactoryNotSet());
649 // UNREACHABLECT(RouteFactory);
650  }
static RouteFactory * factory
Pointer to the current factory.
Definition: Route.h:743
void mutabor::BoxClass::Destroy ( )
inlinevirtual

Destroy the current object.

This function is called when an object shall be deleted. It clears up all references to itself so that it will be deleted if it is not needed anymore.

This functions detatches the device from all routes and calls DoDestroy() afterwards. Finally the Device is going to removed from the device list.

Erneute Implementation in mutaborGUI::BoxData.

Definiert in Zeile 54 der Datei Box-inlines.h.

Benutzt mutabor::BoxClass::Close(), debug_destroy_class(), mutabor::BoxClass::DisconnectFromAll(), mutabor::BoxClass::IsOpen(), mutabor::BoxClass::RemoveFromBoxList() und TRACEC.

Wird benutzt von mutaborGUI::BoxData::Destroy().

54  {
55  TRACEC;
56  Box self(this);
57  TRACEC;
58  if (IsOpen()) Close();
59 
61 
62  TRACEC;
63  debug_destroy_class(this);
64  RemoveFromBoxList(this);
65  TRACEC;
66  }
bool IsOpen()
Definition: Box.h:432
#define TRACEC
Definition: debug.h:246
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:121
void Close()
Definition: Box.h:423
static void RemoveFromBoxList(Box dev)
Definition: Box.cpp:294
virtual void DisconnectFromAll()
Disconnect the device from all pairings with routes GUI data or something else.
Definition: Box-inlines.h:68
void debug_destroy_class(void *ptr, std::string file, int l)
Definition: debug.cpp:117
template<class T , class P , class L >
void mutabor::CommonTypedDeviceAPI< T, P, L >::Destroy ( )
inlinevirtual

Destroy the current object.

This function is called when an object shall be deleted. It clears up all references to itself so that it will be deleted if it is not needed anymore.

This functions detatches the device from all routes and calls DoDestroy() afterwards. Finally the Device is going to removed from the device list.

Definiert in Zeile 53 der Datei Device-inlines.h.

Benutzt debug_destroy_class(), mutaborGUI::IsOpen() und TRACEC.

Wird benutzt von CommonMidiInputTest::tearDown().

53  {
54  TRACEC;
55  DevicePtr self(static_cast<thistype *>(this));
56  TRACEC;
57  if (IsOpen()) Close();
58 
60 
61  TRACEC;
62  debug_destroy_class(this);
63  RemoveFromDeviceList(static_cast<thistype *>(this));
64  TRACEC;
65  }
bool IsOpen() const
Definition: Device.h:633
#define TRACEC
Definition: debug.h:246
virtual void DisconnectFromAll()
Disconnect the device from all pairings with routes GUI data or something else.
static void RemoveFromDeviceList(DevicePtr dev)
Definition: Device.cpp:305
virtual void Close()=0
void debug_destroy_class(void *ptr, std::string file, int l)
Definition: debug.cpp:117
static void mutabor::BoxFactory::Destroy ( )
inlinestatic

Definiert in Zeile 916 der Datei Box.h.

Benutzt mutabor::BoxFactory::factories und UNREACHABLECT.

916  {
917  if (!factories.empty()) {
918  for (factorylist::iterator i = factories.begin();
919  i != factories.end(); i++) {
920  BoxFactory * factory = *i;
921  if (factory)
922  delete factory;
923  }
924  factories.clear();
925  } else
927  }
BoxFactory(size_t id=0)
Definition: Box.cpp:950
static factorylist factories
Definition: Box.h:943
#define UNREACHABLECT(type)
Definition: debug.h:255
static void mutabor::DeviceFactory::Destroy ( )
inlinestatic

Definiert in Zeile 1401 der Datei Device.h.

Benutzt mutabor::DeviceFactory::factories und UNREACHABLECT.

1401  {
1402  if (!factories.empty()) {
1403  for (factorylist::iterator i = factories.begin();
1404  i != factories.end(); ++i) {
1405  DeviceFactory * factory = *i;
1406  if (factory)
1407  delete factory;
1408  }
1409  factories.clear();
1410  } else
1412  }
DeviceFactory(size_t id=0)
Definition: Device.cpp:520
#define UNREACHABLECT(type)
Definition: debug.h:255
static factorylist factories
Definition: Device.h:1437
mutabor::Device::Device ( const std::string &  name = "",
int  id = -1 
)
inlineprotected

Definiert in Zeile 655 der Datei Device.h.

656  :session_id(),
657  routefile_id(id),
658  Name(name),
659  dirty(false),
660  isOpen(false),
662  routes(),
663  userdata(NULL)
664  {}
enum MutaborModeType Mode
Definition: Device.h:652
routeListType routes
Definition: Device.h:653
idtype< Device > session_id
Id used during runtime;.
Definition: Device.h:647
void * userdata
Definition: Device.h:676
std::string Name
Definition: Device.h:649
int routefile_id
Definition: Device.h:648
mutabor::DeviceFactory::DeviceFactory ( size_t  id = 0)

Definiert in Zeile 520 der Datei Device.cpp.

Benutzt mutabor::DeviceFactory::factories und UNREACHABLEC.

Wird benutzt von mutaborGUI::GUIDeviceFactory::CreateShape().

520  {
521  if (factories.size() <= type) {
522  factories.resize(type+1,NULL);
523  }
524  if (factories[type]) {
525  UNREACHABLEC;
526  return;
527  }
528  factories[type] = this;
529 
530  }
#define UNREACHABLEC
Definition: debug.h:256
static factorylist factories
Definition: Device.h:1437
void mutabor::Device::Dirty ( bool  d = true)
inline

Definiert in Zeile 632 der Datei Device.h.

Benutzt mutabor::Device::dirty.

632 { dirty = d; }
void mutabor::BoxClass::DisconnectFromAll ( )
inlinevirtual

Disconnect the device from all pairings with routes GUI data or something else.

This function should be extended in subclasses so that after calling it only temporary pointers (variables in functions or temporary objects) point to the object.

Definiert in Zeile 68 der Datei Box-inlines.h.

Benutzt mutabor::disconnect(), mutabor::BoxClass::routes und TRACEC.

Wird benutzt von mutabor::BoxClass::Destroy().

68  {
69  Route route (NULL);
70  Box self(this);
71 
72  routeListType::iterator R;
73  while ( (R = routes.begin()) != routes.end() ) {
74  TRACEC;
75  route = (*R);
76  TRACEC;
77  disconnect(route,self);
78  TRACEC;
79  }
80  route.reset();
81  }
#define TRACEC
Definition: debug.h:246
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:121
TRouteClass< InputDevice, OutputDevice, Box >::Route Route
Definition: Route.h:545
routeListType routes
Definition: Box.h:813
bool disconnect(Route r, OutputDevice out)
Definition: Route-inlines.h:78
template<class T , class P , class L >
void mutabor::CommonTypedDeviceAPI< T, P, L >::DisconnectFromAll ( )
inlinevirtual

Disconnect the device from all pairings with routes GUI data or something else.

This function should be extended in subclasses so that after calling it only temporary pointers (variables in functions or temporary objects) point to the object.

Definiert in Zeile 68 der Datei Device-inlines.h.

Benutzt mutabor::disconnect() und TRACEC.

68  {
69  Route route (NULL);
70  DevicePtr self(static_cast<thistype *>(this));
71 
72  routeListType::iterator R;
73  while ( (R = routes.begin()) != routes.end() ) {
74  TRACEC;
75  route = (*R);
76  TRACEC;
77  disconnect(route,self);
78  TRACEC;
79  }
80  }
routeListType routes
Definition: Device.h:653
#define TRACEC
Definition: debug.h:246
TRouteClass< InputDevice, OutputDevice, Box >::Route Route
Definition: Route.h:545
bool disconnect(Route r, OutputDevice out)
Definition: Route-inlines.h:78
virtual void mutabor::OutputDeviceClass::do_AddTime ( frac  time)
protectedpure virtual
virtual void mutabor::OutputDeviceClass::do_Controller ( int  mutabor_channel,
int  controller,
int  value,
size_t  id 
)
protectedpure virtual
virtual int mutabor::OutputDeviceClass::do_GetChannel ( int  inkey,
size_t  channel,
size_t  id 
)
protectedpure virtual
virtual void mutabor::OutputDeviceClass::do_Gis ( GisToken token,
char  turn 
)
protectedpure virtual
virtual void mutabor::OutputDeviceClass::do_handle_event ( event  e)
protectedpure virtual
virtual void mutabor::OutputDeviceClass::do_MidiOut ( mutabor::Box  box,
midi_string  data 
)
protectedpure virtual
virtual void mutabor::OutputDeviceClass::do_MidiOut ( uint8_t *  p,
size_t  n 
)
protectedpure virtual
virtual void mutabor::OutputDeviceClass::do_NoteOff ( Box  box,
int  taste,
int  velo,
RouteClass r,
size_t  id,
bool  is_note_on 
)
protectedpure virtual
virtual void mutabor::OutputDeviceClass::do_NoteOn ( Box  box,
int  taste,
int  velo,
RouteClass r,
size_t  id,
const ChannelData input_channel_data 
)
protectedpure virtual

Really Send the beginning of a sounding note.

Parameter
boxMutabor box that contains the tuning information
tasteinput key from file or keyboard
velokey press velocity
rroute that has been used to transmit the note
idan additional number that is used to make the note unique
input_channel_datacurrent device settings (Controllers, Sound, etc.)
Siehe auch
OutputDeviceClass::NoteOn, OutputDeviceClass::NoteOff

Implementiert in mutabor::CommonMidiOutput< MidiFileOutputProvider, CommonFileOutputDevice >, mutabor::CommonMidiOutput< mutabor::DebugMidiOutputProvider, mutabor::OutputDeviceClass > und mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >.

Wird benutzt von mutabor::OutputDeviceClass::NoteOn().

virtual bool mutabor::OutputDeviceClass::do_Open ( )
inlineprotectedvirtual
virtual void mutabor::OutputDeviceClass::do_Panic ( int  type)
inlineprotectedvirtual
virtual void mutabor::OutputDeviceClass::do_Quiet ( Route  r,
int  type 
)
protectedpure virtual
virtual void mutabor::OutputDeviceClass::do_Quiet ( Route  r,
int  type,
size_t  id 
)
protectedpure virtual
virtual void mutabor::OutputDeviceClass::do_UpdateTones ( RouteClass route)
protectedpure virtual
void mutabor::BoxClass::DoClose ( )
virtual

Erneute Implementation in mutaborGUI::BoxData.

Definiert in Zeile 405 der Datei Box.cpp.

Benutzt mutASSERT.

Wird benutzt von mutabor::BoxClass::Close() und mutaborGUI::BoxData::DoClose().

405  {
406  Reset();
408  if (loopguard) {
409  loopguard -> request_exit();
410  loopguard = NULL;
411  }
412  }
virtual void Reset()
Definition: Box.cpp:381
watchdog< Box > * loopguard
Definition: Box.h:838
#define mutASSERT(expr)
RouteClass * mutabor::RouteFactory::DoCreate ( ) const
protectedvirtual

Creates a generic route.

This functions creates a route object on the heap and returns a smart pointer to it. This route will not be preconfigured.

Each RouteFactory class must override this function to return a route of its type.

Rückgabe
Route smart pointer to the newly created route

Erneute Implementation in mutaborGUI::GUIRouteFactory.

Definiert in Zeile 550 der Datei Route.cpp.

Wird benutzt von mutabor::RouteFactory::Create().

551  {
552  return new RouteClass ();
553  }
TRouteClass< InputDevice, OutputDevice, Box > RouteClass
Definition: Route.h:546
RouteClass * mutabor::RouteFactory::DoCreate ( InputDevice in,
OutputDevice out,
RouteType  type,
int  iFrom,
int  iTo,
Box  box,
bool  active,
int  oFrom,
int  oTo,
bool  oNoDrum 
) const
protectedvirtual

Creates a preconfigured route.

This functions creates a route object on the heap and returns a smart pointer to it. This route will be preconfigured according the data provided in the arguments.

Each RouteFactory class must override this function to return a route of its type.

Parameter
inInputDevice& Reference to a smart pointer for the input device where the route starts.
outOutputDevice& End point of the route.
typeRouteType Type of the input filter. See RouteType for more information.
iFromstart of the range for the input filter. Its meaning depends on the input filter type.
iToend of the range for the input filter. Its meaning depends on the input filter type.
boxbox to be used. Values less than 0 indicate a pass through route or a GMN box.
activeindicates whether the events on the route may change the tuning of the box. Regardless of this setting the box referenced by the box parameter will influence the tuning of the events in this route.
oFromStart of the range of the output filter (will be interpreted by the output device.
oToEnd of the reange of the output fileter (will be interpreted by the output device
oNoDrumOn MIDI like devices avoid the channel usually used for percussion.
Rückgabe
Route created by this function (smart pointer).

Definiert in Zeile 555 der Datei Route.cpp.

565  {
566  return new RouteClass (in,out,type,
567  iFrom,iTo,
568  box,active,
569  oFrom,oTo,
570  oNoDrum);
571  }
TRouteClass< InputDevice, OutputDevice, Box > RouteClass
Definition: Route.h:546
BoxClass * mutabor::BoxFactory::DoCreateBox ( int  id = -1) const
protectedvirtual

Erneute Implementation in mutaborGUI::GUIBoxFactory.

Definiert in Zeile 1011 der Datei Box.cpp.

1011  {
1012  BoxClass * box = new BoxClass(id);
1013  if (!box) BOOST_THROW_EXCEPTION(BoxNotCreated());
1014  return box;
1015  }
virtual InputDeviceClass* mutabor::DeviceFactory::DoCreateInput ( const std::string &  name,
MutaborModeType  mode,
int  id = -1 
) const
protectedpure virtual
virtual OutputDeviceClass* mutabor::DeviceFactory::DoCreateOutput ( const std::string &  name,
int  id = -1 
) const
protectedpure virtual
int DoError ( int  nr,
int  pos = -1 
)

Definiert in Zeile 142 der Datei GSP.cpp.

Benutzt CurrentLine, CurrentPos, GspCurrentLineNr, GspError, GspErrorLine, GspErrorLineNr und GspErrorPos.

Wird benutzt von DoParse(), GetSep(), GspParse() und ReadNote().

143 {
144  if ( GspError ) return GspError;
145  GspError = nr;
147  if ( pos == -1 )
149  else
150  GspErrorPos = pos;
151 
153  return nr;
154 }
int GspErrorPos
Definition: GSP.cpp:30
int GspError
Definition: GSP.cpp:32
std::string GspErrorLine
Definition: GSP.cpp:31
std::string CurrentLine
Definition: GSP_File.cpp:36
size_t CurrentPos
Definition: GSP_File.cpp:37
int GspCurrentLineNr
Definition: GSP.cpp:28
int GspErrorLineNr
Definition: GSP.cpp:29
void mutabor::BoxClass::dog_watching ( )
inline

Definiert in Zeile 753 der Datei Box.h.

Benutzt _mut, mutabor::BoxClass::get_routefile_id(), mutabor::BoxClass::interrupt_logic(), mutabor::BoxClass::issue_error(), mutabor::BoxClass::logic_timing, mutabor::BoxClass::logic_timing_mutex, mutabor::hidden::runtime_error und mutabor::hidden::runtime_warning.

753  {
754  int counter;
755  { // lock the mutex as short as possible.
757  if (logic_timing >= 0) {
758  counter = logic_timing++;
759  } else return;
760  }
761 
762  if (counter > 5) {
763  interrupt_logic(true);
765  _mut("Timeout while executing logic in box %d."),
766  get_routefile_id());
767  } else if (counter == 1) {
769  _mut("The logic in box %d is too slow."),
770  get_routefile_id());
771  }
772  }
int logic_timing
Definition: Box.h:835
Mutex logic_timing_mutex
Definition: Box.h:836
int get_routefile_id() const
Definition: Box.h:282
wxMutexLocker ScopedLock
Definition: thread.h:57
void issue_error(error_type type, const char *format,...)
Format and process a runtime error message or warning.
Definition: Box.h:720
#define _mut
Definition: Defs.h:117
void interrupt_logic(bool allow_resume=true)
Break the execution of any running logic loops.
Definition: Box.h:620
void mutabor::BoxFactory::DoLoadBoxes ( tree_storage config) const
protectedvirtual

load the routes from a tree based configuration

Parameter
configconifiguration to be read from

Erneute Implementation in mutaborGUI::GUIBoxFactory.

Definiert in Zeile 1017 der Datei Box.cpp.

Benutzt STUBC.

1018  {
1019  STUBC;
1020  }
#define STUBC
Definition: debug.h:252
void mutabor::DeviceFactory::DoLoadInputDevices ( tree_storage config) const
protectedvirtual

load the routes from a tree based configuration

Parameter
configconifiguration to be read from

Definiert in Zeile 654 der Datei Device.cpp.

Benutzt STUBC.

655  {
656  STUBC;
657  }
#define STUBC
Definition: debug.h:252
void mutabor::DeviceFactory::DoLoadOutputDevices ( tree_storage config) const
protectedvirtual

load the routes from a tree based configuration

Parameter
configconifiguration to be read from

Definiert in Zeile 644 der Datei Device.cpp.

Benutzt STUBC.

645  {
646  STUBC;
647  }
#define STUBC
Definition: debug.h:252
void mutabor::RouteFactory::DoLoadRoutes ( tree_storage config) const
protectedvirtual

load the routes from a tree based configuration

Parameter
configconifiguration to be read from

Definiert in Zeile 573 der Datei Route.cpp.

Benutzt mutabor::tree_storage::GetPath(), mutabor::BoxFactory::LoadBoxes(), mutabor::DeviceFactory::LoadInputDevices(), mutabor::DeviceFactory::LoadOutputDevices(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::LoadRoutes(), mutASSERT, mutabor::tree_storage::toLeaf() und mutabor::tree_storage::toParent().

Wird benutzt von mutabor::RouteFactory::LoadRoutes().

574  {
575 #ifdef DEBUG
576  std::string oldpath = config.GetPath();
577 #endif
578  config.toLeaf("Routing");
579 
580  BoxFactory::LoadBoxes(config);
583  RouteClass::LoadRoutes(config);
584 
585  config.toParent();
586  mutASSERT(oldpath == config.GetPath());
587  }
static void LoadBoxes(tree_storage &config)
load the routes from a tree based configuration
Definition: Box.cpp:965
#define mutASSERT(expr)
static void LoadInputDevices(tree_storage &config)
load the routes from a tree based configuration
Definition: Device.cpp:587
static void LoadRoutes(tree_storage &config)
Load the current routes from a tree storage.
static void LoadOutputDevices(tree_storage &config)
load the routes from a tree based configuration
Definition: Device.cpp:534
void mutabor::InputDeviceClass::DoNoteOff ( Route R,
int  key,
int  velocity,
size_t  make_unique 
)
inline

Definiert in Zeile 1286 der Datei Device.h.

Benutzt mutabor::InputDeviceClass::current_keys, DEBUGLOG und mutabor::InputDeviceClass::current_keys_type::remove().

Wird benutzt von mutabor::InputDeviceClass::NoteOff() und mutabor::InputDeviceClass::Panic().

1289  {
1290  if (R) {
1291  R->NoteOff(key,velocity,make_unique);
1292  }
1293  current_keys.remove(key, velocity, make_unique, R);
1294  DEBUGLOG(routing,("(key = %d, channel = %lu, id = %lu)"),
1295  key,
1296  (unsigned long)R->get_session_id(),
1297  (unsigned long)make_unique);
1298  }
#define DEBUGLOG(level,...)
Definition: debug.h:240
void remove(int key, int velocity, int unique_id, Route &R)
Definition: Device.h:1083
current_keys_type current_keys
Definition: Device.h:1314
bool mutabor::BoxClass::DoOpen ( )
virtual

Erneute Implementation in mutaborGUI::BoxData.

Definiert in Zeile 389 der Datei Box.cpp.

Wird benutzt von mutaborGUI::BoxData::DoOpen() und mutabor::BoxClass::Open().

389  {
390  Reset();
391  loopguard = new watchdog<Box>(this,
392  loop_timeout);
393  wxThreadError result = loopguard -> Create(1024*100); // Stack Size
394  if (result != wxTHREAD_NO_ERROR) {
395  delete loopguard;
396  //loopguard = NULL;
397  Close();
398  return false;
399  }
400  loopguard->Run();
401  // hidden::mutabor_reset_action_trace(box);
402  return true;
403  }
virtual void Reset()
Definition: Box.cpp:381
watchdog< Box > * loopguard
Definition: Box.h:838
mutint64 loop_timeout
Definition: Box.h:837
void Close()
Definition: Box.h:423
int DoParse ( )

Definiert in Zeile 526 der Datei GSP.cpp.

Benutzt BeginRange(), BeginSegment(), BeginSequenz(), BracketDeep, Brackets, CHAR0, CharIn(), CheckError(), Comma(), CurrentPos, DEBUGLOGBASE, DelimitChars, DoError(), EndParameter(), EndRange(), EndSegment(), EndSequenz(), Eof, GetSep(), GspError, IsLetter(), Komma, LastTag, NextSequenz(), ParaMode, ReadNote(), ReadParaNumber(), ReadParaStr(), ReadTag(), SavePos() und Tag().

Wird benutzt von GspParse().

527 {
528  ParaMode = 0;
529 
530  while ( !Eof ) {
531  char c = CHAR0;
532  SavePos();
533  Komma = 0;
534 
535  if ( ParaMode ) {
536  if ( isdigit(c) || ( c == '+') || ( c == '-') ) {
537  // number parameter
538  if ( ReadParaNumber() ) return GspError;
539  }
540  else if ( c == ('"') ) {
541  // string parameter
542  if ( ReadParaStr() ) return GspError;
543  }
544  else {
545  // wrong parameter
546  return DoError(10);
547  }
548 
549  // end of parameterlist
550  if ( CHAR0 == '>' ) {
551  CurrentPos++;
552  GetSep();
553  if ( CheckError(EndParameter()) ) return GspError;
554  ParaMode = 0;
555  continue;
556  }
557 
558  // , or > expected
559  if ( !Komma ) {
560  return DoError(11);
561  }
562  }
563  else {
564  // not ParaMode
565  if ( LastTag ) LastTag --;
566  if ( CharIn(c, DelimitChars) ) {
567  int i = 0;
568  while ( DelimitChars[(size_t)i] != c ) i++;
569  if ( i & 1 ) {
570  // closing bracket
571  if ( !BracketDeep )
572  return DoError(1);
573 
574  DEBUGLOGBASE (other,(""),
575  ("brackets: %s, i= %d, last = %d"),
576  Brackets.c_str(),
577  i,
578  Brackets[Brackets.length()-1]);
579 
580  if ( Brackets[Brackets.length()-1] != i-1 )
581  return DoError(2 + (int) Brackets[BracketDeep-1]/2);
582 
583  Brackets = Brackets.substr(0,Brackets.length()-1);
584 
585 #if 0
586  if ( Brackets[--BracketDeep] != i-1 )
587  return DoError(2 + Brackets[BracketDeep]/2);
588 
589 #endif
590  } else // opening bracket
591  Brackets += i;
592 
593 #if 0
594  Brackets[BracketDeep++] = i;
595 
596 #endif
597 #ifdef GMN_STRICT
598  if ( !LastTag && c == '(' )
599  return DoError(41); // error: range without tag
600 
601 #endif
602  CurrentPos++;
603  GetSep();
604  switch ( c ) {
605  case '{': if ( CheckError(BeginSegment()) ) return GspError;
606  break;
607  case '}': if ( CheckError(EndSegment()) ) return GspError;
608  break;
609 
610  case '[': if ( CheckError(BeginSequenz()) ) return GspError;
611  break;
612 
613  case ']': if ( CheckError(EndSequenz()) ) return GspError;
614  break;
615 
616  case '(': if ( CheckError(BeginRange()) ) return GspError;
617  break;
618 
619  case ')': if ( CheckError(EndRange()) ) return GspError;
620  break;
621  }
622 
623  /* if ( Komma )
624  if ( CheckError(NextSequenz()) ) return GspError; */
625  continue;
626  }
627 
628  if ( c == '\\' ) {
629  if ( ReadTag() ) return GspError;
630  /* if ( !ParaMode && Komma )
631  if ( CheckError(NextSequenz()) ) return GspError; */
632  continue;
633  }
634 
635  if ( c == '|' ) {
636  CurrentPos++;
637  GetSep();
638 #ifdef NO_SHORT_BAR
639  if ( CheckError(Tag("bar")) ) return GspError;
640 
641 #else
642  if ( CheckError(Tag("|")) ) return GspError;
643 #endif
644  /* if ( Komma )
645  if ( CheckError(NextSequenz()) ) return GspError; */
646  continue;
647  }
648 
649  if ( c == ',' ) {
650  if ( Brackets[BracketDeep-1] != 0 )
651  return DoError(24); // unexpected comma
652  CurrentPos++;
653  GetSep();
654  if ( CheckError(Comma()) ) return GspError;
655  continue;
656  }
657 
658  if ( IsLetter(c) ) {
659  if ( ReadNote() ) return GspError;
660  if ( Komma )
661  if ( CheckError(NextSequenz()) ) return GspError;
662  continue;
663  }
664 
665  // unallowed char
666  return DoError(20);
667  }
668  }
669  return 0;
670 }
int Eof
Definition: GSP_File.cpp:38
int ReadNote()
Definition: GSP.cpp:418
int IsLetter(char c)
Definition: GSP.cpp:96
#define CHAR0
Definition: GSP.cpp:179
int GspError
Definition: GSP.cpp:32
void SavePos()
Definition: GSP.cpp:169
char Komma
Definition: GSP.cpp:54
int BeginSegment()
Definition: GIS.cpp:555
int BeginRange()
Definition: GIS.cpp:638
int Tag(const std::string &tagName)
Definition: GIS.cpp:726
char ParaMode
Definition: GSP.cpp:53
int CheckError(int nr)
Definition: GSP.cpp:157
std::string Brackets
Definition: GSP.cpp:56
int ReadParaNumber()
Definition: GSP.cpp:313
int EndSegment()
Definition: GIS.cpp:572
size_t CurrentPos
Definition: GSP_File.cpp:37
int BeginSequenz()
Definition: GIS.cpp:585
int Comma()
Definition: GIS.cpp:786
int ReadParaStr()
Definition: GSP.cpp:337
char DelimitChars[]
Definition: GSP.cpp:74
#define BracketDeep
Definition: GSP.cpp:57
int DoError(int nr, int pos=-1)
Definition: GSP.cpp:142
int NextSequenz()
Definition: GIS.cpp:691
int EndParameter()
Definition: GIS.cpp:626
char LastTag
Definition: GSP.cpp:63
int EndRange()
Definition: GIS.cpp:672
int GetSep()
Definition: GSP.cpp:192
int ReadTag()
Definition: GSP.cpp:371
#define DEBUGLOGBASE(level, type,...)
Definition: debug.h:239
int CharIn(char c, const char *s)
Definition: GSP.cpp:89
int EndSequenz()
Definition: GIS.cpp:602
void mutabor::BoxFactory::DoSaveBoxes ( tree_storage config) const
protectedvirtual

write the routes to the configuration

Parameter
configconfiguration to be written to

Erneute Implementation in mutaborGUI::GUIBoxFactory.

Definiert in Zeile 1022 der Datei Box.cpp.

Benutzt STUBC.

1023  {
1024  STUBC;
1025  }
#define STUBC
Definition: debug.h:252
void mutabor::DeviceFactory::DoSaveInputDevices ( tree_storage config) const
protectedvirtual

write the routes to the configuration

Parameter
configconfiguration to be written to

Definiert in Zeile 659 der Datei Device.cpp.

Benutzt STUBC.

660  {
661  STUBC;
662  }
#define STUBC
Definition: debug.h:252
void mutabor::DeviceFactory::DoSaveOutputDevices ( tree_storage config) const
protectedvirtual

write the routes to the configuration

Parameter
configconfiguration to be written to

Definiert in Zeile 649 der Datei Device.cpp.

Benutzt STUBC.

650  {
651  STUBC;
652  }
#define STUBC
Definition: debug.h:252
void mutabor::RouteFactory::DoSaveRoutes ( tree_storage config) const
protectedvirtual

write the routes to the configuration

Parameter
configconfiguration to be written to

Definiert in Zeile 589 der Datei Route.cpp.

Benutzt mutaborGUI::DebugCheckRoutes(), mutabor::tree_storage::DeleteGroup(), mutabor::tree_storage::GetPath(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::InitializeIds(), mutASSERT, mutabor::BoxFactory::SaveBoxes(), mutabor::DeviceFactory::SaveInputDevices(), mutabor::DeviceFactory::SaveOutputDevices(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::SaveRoutes(), mutabor::tree_storage::toLeaf() und mutabor::tree_storage::toParent().

Wird benutzt von mutabor::RouteFactory::SaveRoutes().

590  {
591 #ifdef DEBUG
592  std::string oldpath = config.GetPath();
593 #endif
594  config.DeleteGroup(("Routing"));
595 
596  config.toLeaf(("Routing"));
597 
598  // clean configuration
599  // delete unused output devices
601 #ifdef DEBUG
603 #endif
604 
605  BoxFactory::SaveBoxes(config);
608  RouteClass::SaveRoutes(config);
609 
610  config.toParent();
611  mutASSERT(oldpath == config.GetPath());
612  }
static void SaveInputDevices(tree_storage &config)
write the routes to the configuration
Definition: Device.cpp:620
#define mutASSERT(expr)
static void SaveBoxes(tree_storage &config)
write the routes to the configuration
Definition: Box.cpp:987
static void InitializeIds()
Initialize the internal device identifiers.
static void SaveRoutes(tree_storage &config)
Save the current routes in a tree storage.
void DebugCheckRoutes()
Definition: DebugRoute.cpp:838
static void SaveOutputDevices(tree_storage &config)
write the routes to the configuration
Definition: Device.cpp:564
void mutabor::InputDeviceClass::DoSilenceKeys ( bool  remove)

Definiert in Zeile 353 der Datei Device.cpp.

Benutzt mutabor::InputDeviceClass::current_keys_type::begin(), mutabor::InputDeviceClass::current_keys_type::clear(), mutabor::midi::CONTROLLER_OFF, mutabor::InputDeviceClass::current_keys, DEBUGLOG, mutabor::InputDeviceClass::current_keys_type::end() und mutabor::midi::get_holds().

Wird benutzt von mutabor::InputDeviceClass::Panic() und mutabor::InputDeviceClass::SilenceKeys().

353  {
355  size_t j = 0;
356  DEBUGLOG (routing, "" );
357  for (i = current_keys.begin();i!= current_keys.end();i++) {
358  for (const int * k = midi::get_holds();
359  *k >= 0; k++) {
360  i->route->Controller(*k,
362  i->unique_id);
363  }
364  i->route->NoteOff(i->key,i->velocity,i->unique_id);
365  j++;
366  }
367  DEBUGLOG (routing, "silenced %lu keys" ,(unsigned long)j);
368  if (remove) {
370  }
371  }
#define DEBUGLOG(level,...)
Definition: debug.h:240
current_keys_type current_keys
Definition: Device.h:1314
const int * get_holds()
Return a list of hold controllers.
Definition: MidiKern.h:422
iterator mutabor::InputDeviceClass::current_keys_type::end ( )
inline
const_iterator mutabor::InputDeviceClass::current_keys_type::end ( ) const
inline

Definiert in Zeile 1114 der Datei Device.h.

Benutzt mutabor::InputDeviceClass::current_keys_type::map.

1114 { return map.end(); }
int EndParameter ( )

Definiert in Zeile 626 der Datei GIS.cpp.

Benutzt AddStr, DEBUGLOG2, LastPara, Para, GisToken::Sep und TagSep.

Wird benutzt von DoParse() und ReadTag().

627 {
628  DEBUGLOG2(gmnfile,(">"));
629 
630  if ( Para )
631  AddStr((LastPara->Sep), (">"), Sep);
632  else
633  AddStr(TagSep, (">"), Sep);
634 
635  return 0;
636 }
std::string Sep
Definition: GSP.cpp:39
GisToken * Para
Definition: GIS.cpp:112
#define AddStr(s1, s2, s3)
Definition: GIS.cpp:492
std::string TagSep
Definition: GIS.cpp:111
GisToken * LastPara
Definition: GIS.cpp:112
#define DEBUGLOG2(level,...)
Definition: debug.h:241
std::string Sep
Definition: GIS.h:121
int EndRange ( )

Definiert in Zeile 672 der Datei GIS.cpp.

Benutzt GisTagEnd::Begin, BuildTag(), Current, DEBUGLOG2, GisTagBegin::End, LastOpenRange, GisToken::Next, Tag() und TagMode.

Wird benutzt von DoParse().

673 {
674  DEBUGLOG2(gmnfile,(")\n"));
675 
676  if ( TagMode ) BuildTag();
677 
679 
680  *Current = Tag;
681 
682  Current = &(Tag->Next);
683 
685 
686  (Tag->Begin)->End = Tag;
687 
688  return 0;
689 }
char TagMode
Definition: GIS.cpp:109
GisTagBegin * LastOpenRange
Definition: GIS.cpp:108
std::string Sep
Definition: GSP.cpp:39
GisToken * End
Definition: GIS.h:343
int Tag(const std::string &tagName)
Definition: GIS.cpp:726
GisToken * Next
Definition: GIS.h:120
int BuildTag()
Definition: GIS.cpp:530
GisToken ** Current
Definition: GIS.cpp:107
Definition: GIS.h:387
#define DEBUGLOG2(level,...)
Definition: debug.h:241
GisTagBegin * Begin
Definition: GIS.h:391
int EndSegment ( )

Definiert in Zeile 572 der Datei GIS.cpp.

Benutzt BuildTag(), Current, DEBUGLOG2, LastOpenBracket, GisToken::Next und TagMode.

Wird benutzt von DoParse().

573 {
574  DEBUGLOG2(gmnfile,("}"));
575 
576  if ( TagMode ) BuildTag();
577  *Current = 0;
578  ((GisSegment*)(LastOpenBracket))->Sep2 = Sep;
581 
582  return 0;
583 }
char TagMode
Definition: GIS.cpp:109
std::string Sep
Definition: GSP.cpp:39
GisToken * Next
Definition: GIS.h:120
int BuildTag()
Definition: GIS.cpp:530
GisToken * LastOpenBracket
Definition: GIS.cpp:107
GisToken ** Current
Definition: GIS.cpp:107
#define DEBUGLOG2(level,...)
Definition: debug.h:241
int EndSequenz ( )

Definiert in Zeile 602 der Datei GIS.cpp.

Benutzt BuildTag(), Current, DEBUGLOG2, LastOpenBracket, GisToken::Next, Sep und TagMode.

Wird benutzt von DoParse().

603 {
604  DEBUGLOG2(gmnfile,("]"));
605 
606  if ( TagMode ) BuildTag();
607 
608  *Current = 0;
609 
610  ((GisSequenz*)LastOpenBracket)->Sep2 =Sep;
611 
613 
615 
616  return 0;
617 }
char TagMode
Definition: GIS.cpp:109
std::string Sep
Definition: GSP.cpp:39
GisToken * Next
Definition: GIS.h:120
int BuildTag()
Definition: GIS.cpp:530
GisToken * LastOpenBracket
Definition: GIS.cpp:107
GisToken ** Current
Definition: GIS.cpp:107
#define DEBUGLOG2(level,...)
Definition: debug.h:241
TagList* EndTag ( TagList **  list,
GisTagEnd tagEnd 
)

Definiert in Zeile 489 der Datei GIS_Head.cpp.

Benutzt GisTagEnd::Begin, GTTag, if(), TagListData::Next, RemoveTag(), TagListData::Tag und GisTag::Type().

Wird benutzt von GisWriteHead::ProceedGis() und GisReadArtHead::Read().

490 {
491  TagList *Pos = *list;
492 
493  if ( Pos && Pos->Tag->Type() == GTTag )
494  Pos = Pos->Next;
495 
496  if ( Pos && tagEnd->Begin == Pos->Tag ) {
497  if ( Pos != *list )
498  RemoveTag(list);
499 
500  RemoveTag(list);
501  }
502 
503  return *list;
504 }
Definition: GIS.h:104
if(!(yy_init))
Definition: mutlex.cc:890
struct TagListData * Next
Definition: GIS_Head.h:147
GisTag * Tag
Definition: GIS_Head.h:148
TagList * RemoveTag(TagList **list)
Definition: GIS_Head.cpp:462
GisTagBegin * Begin
Definition: GIS.h:391
virtual GisType Type() const
Definition: GIS.h:307
mutabor::InputDeviceClass::current_keys_type::entry::entry ( int  k,
int  u,
int  v,
Route R,
InputDevice  i,
const ChannelData c,
void *  d 
)
inline
void Erase ( TagList list)

Definiert in Zeile 453 der Datei GIS_Head.cpp.

Benutzt TagListData::Next.

Wird benutzt von GisReadArtHead::~GisReadArtHead() und GisWriteHead::~GisWriteHead().

454 {
455  while ( list ) {
456  TagList *TopTag = list;
457  list = TopTag->Next;
458  delete TopTag;
459  }
460 }
struct TagListData * Next
Definition: GIS_Head.h:147
void mutabor::BoxClass::ExecuteCallbacks ( unsigned int  flags)
protected

Definiert in Zeile 850 der Datei Box.cpp.

Benutzt mutabor::BoxClass::callbacks.

850  {
851  doexecute_flags doit(flags);
852  std::for_each(callbacks.begin(),callbacks.end(),doit);
853  }
std::list< ChangedCallback * > callbacks
Definition: Box.h:820
void mutabor::BoxClass::ExecuteCallbacks ( const char *  action)
protected

Definiert in Zeile 855 der Datei Box.cpp.

Benutzt mutabor::BoxClass::callbacks.

855  {
856  doexecute_action doit(action);
857  std::for_each(callbacks.begin(),callbacks.end(),doit);
858  }
std::list< ChangedCallback * > callbacks
Definition: Box.h:820
mutabor::RouteFactory::FactoryAlreadySet::FactoryAlreadySet ( RouteFactory o,
RouteFactory n 
)
inline

Definiert in Zeile 575 der Datei Route.h.

575  : logic_error(_mutN("Route factory already set")),
576  old(o), created(n) {}
#define _mutN(x)
Definition: Defs.h:116
mutabor::BoxFactory::FactoryNotFound::FactoryNotFound ( int  i)
inline

Definiert in Zeile 883 der Datei Box.h.

Benutzt mutabor::BoxFactory::FactoryNotFound::message_.

883  :std::exception(), id(i) {
884  std::ostringstream writer(message_);
885  writer << "Factory for box type " << i << " has not been registered.";
886  message_ = writer.str();
887  }
mutabor::DeviceFactory::FactoryNotFound::FactoryNotFound ( int  i)
inline

Definiert in Zeile 1349 der Datei Device.h.

Benutzt mutabor::DeviceFactory::FactoryNotFound::message_.

1349  :std::exception(), id(i) {
1350  std::ostringstream writer(message_);
1351  writer << "Factory for device type " << i << " has not been registered.";
1352  message_ = writer.str();
1353  }
static listtype::iterator mutabor::BoxClass::FindInBoxList ( Box  b)
inlinestaticprotected

Definiert in Zeile 856 der Datei Box.h.

Benutzt mutabor::BoxClass::boxList.

Wird benutzt von mutabor::BoxClass::IsInBoxList().

856  {
857  typename listtype::iterator i =
858  std::find(boxList.begin(),
859  boxList.end(),
860  b);
861  return i;
862  }
static listtype boxList
Definition: Box.h:805
template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
static listtype::iterator mutabor::CommonTypedDeviceAPI< T, P, L >::FindInDeviceList ( DevicePtr  dev)
inlinestaticprotected

Definiert in Zeile 816 der Datei Device.h.

Wird benutzt von mutabor::CommonTypedDeviceAPI< InputDeviceClass >::IsInDeviceList().

816  {
817  typename listtype::iterator i =
818  std::find(deviceList.begin(),
819  deviceList.end(),
820  dev);
821  return i;
822  }
static listtype deviceList
Definition: Device.h:694
Route mutabor::FindRoute ( size_t  id)
void mutabor::BoxClass::free_mutex_callback ( hidden::mutabor_logic_parsed logic)
static

Definiert in Zeile 918 der Datei Box.cpp.

Benutzt mutASSERT und mutabor::hidden::mutabor_logic_parsed::mutex.

918  {
919  mutASSERT(logic->mutex);
920  if (logic->mutex) {
921  Mutex * m = static_cast<Mutex *>(logic->mutex);
922  delete m;
923  }
924  }
wxMutex Mutex
Definition: thread.h:56
#define mutASSERT(expr)
int mutabor::ChannelData::get_bank_coarse ( ) const
inline

Definiert in Zeile 488 der Datei Device.h.

Benutzt mutabor::ChannelData::bank_coarse.

Wird benutzt von mutabor::CommonMidiOutput< T, D >::CopyProgramChange().

488 { return bank_coarse; }
uint8_t bank_coarse
Definition: Device.h:497
int mutabor::ChannelData::get_bank_fine ( ) const
inline

Definiert in Zeile 489 der Datei Device.h.

Benutzt mutabor::ChannelData::bank_fine.

Wird benutzt von mutabor::CommonMidiOutput< T, D >::CopyProgramChange().

489 { return bank_fine; }
uint8_t bank_fine
Definition: Device.h:498
long mutabor::BoxClass::tone::get_bend ( ) const
inline

Return the microtonal part of the in fixed point integer format.

This format has been chosen as some device backends need some space for additional calculations. On the other hand the 24 bit provides much room to avoid rounding errors in the logic.

Rückgabe
Microtonal part in fixed point format with 24 bits after the comma. I.e. 0x1000000 denotes one pitch.

Definiert in Zeile 182 der Datei Box.h.

Benutzt mutabor::hidden::MUT_INTERVAL::value.

Wird benutzt von mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >::pitch_and_bend().

182  {
183  return value & 0xFFFFFF;
184  }
int mutabor::ChannelData::get_bend ( )
inline
int mutabor::ChannelData::get_controller ( size_t  number) const
inline
int mutabor::BoxClass::get_distance ( int  note)

Definiert in Zeile 801 der Datei Box.cpp.

Benutzt mutabor::hidden::mutabor_get_note_distance() und mutabor::hidden::mutabor_box_type::tonesystem.

801  {
802  if (!box) return INT_MIN;
804  }
tone_system * tonesystem
tone system.
Definition: box.h:144
struct mutabor_box_type * box
Definition: Box.h:810
int mutabor_get_note_distance(int note, tone_system *system)
Definition: Interpre.h:394
virtual const std::string mutabor::BoxClass::get_errors ( )
inlinevirtual

Return the collected errors and warnings.

This function is a prototype for potential error message collection in the GUI part.

Rückgabe
a string containing the collected error messages

Definiert in Zeile 742 der Datei Box.h.

Wird benutzt von mutabor::BoxClass::Compile().

742  {
743  static std::string nothing = "";
744  return nothing;
745  }
controller_vector::const_iterator mutabor::ChannelData::get_first_changed_controller ( ) const
inline

Get the first changed controller.

Rückgabe
Iterator to the first changed controller.
Noch zu erledigen:
Provide changed_controller iterator type

Definiert in Zeile 356 der Datei Device.h.

Benutzt mutabor::ChannelData::controller_changed und mutabor::ChannelData::get_next_changed_controller().

Wird benutzt von mutabor::CommonMidiOutput< T, D >::CopyProgramChange() und mutabor::CommonMidiOutput< T, D >::do_UpdateControllers().

356  {
357  controller_vector::const_iterator retval = controller_changed.begin();
358  if (retval == controller_changed.end())
359  return retval;
360  if (*retval != -1)
361  return retval;
362  return get_next_changed_controller(retval);
363  }
controller_vector::const_iterator get_next_changed_controller(controller_vector::const_iterator last) const
Get the first changed controller.
Definition: Device.h:392
controller_vector controller_changed
Definition: Device.h:492
controller_vector::const_iterator mutabor::ChannelData::get_first_changed_controller ( const ChannelData other) const
inline

Get the first changed controller that differs from the corresponding controller in another channel.

Parameter
otherThe channel data we compare ourselves to.
Rückgabe
iterator to the first differently changed controller.

Definiert in Zeile 372 der Datei Device.h.

Benutzt mutabor::ChannelData::controller, mutabor::ChannelData::controller_changed und mutabor::ChannelData::get_next_changed_controller().

372  {
373  controller_vector::const_iterator retval = controller_changed.begin();
374  if (retval == controller_changed.end())
375  return retval;
376  if (*retval >= 0 && other.controller.size() <= (size_t)*retval)
377  return retval;
378  if (*retval != -1 && controller[*retval] != other.controller[*retval])
379  return retval;
380  return get_next_changed_controller(other,retval);
381  }
controller_vector::const_iterator get_next_changed_controller(controller_vector::const_iterator last) const
Get the first changed controller.
Definition: Device.h:392
controller_vector controller
Definition: Device.h:491
controller_vector controller_changed
Definition: Device.h:492
BoxClass::tone mutabor::BoxClass::get_frequency ( int  note)

Definiert in Zeile 789 der Datei Box.cpp.

Benutzt mutabor::hidden::mutabor_get_note_frequency() und mutabor::hidden::mutabor_box_type::tonesystem.

Wird benutzt von mutabor::BoxClass::GetCurrentTones().

789  {
790  if (!box)
791  return tone();
793  }
tone_system * tonesystem
tone system.
Definition: box.h:144
struct mutabor_box_type * box
Definition: Box.h:810
mutabor_interval mutabor_get_note_frequency(int note, tone_system *system)
Definition: Interpre.h:406
bool mutabor::ChannelData::get_hold ( ) const
inline
int mutabor::ChannelData::get_index ( int  message)
inline

Definiert in Zeile 265 der Datei Device.h.

Benutzt mutabor::ChannelData::controller, mutabor::midi::DATA_BUTTON_DECREMENT, mutabor::midi::DATA_BUTTON_INCREMENT, mutabor::midi::DATA_ENTRY_COARSE, mutabor::midi::DATA_ENTRY_FINE, mutabor::ChannelData::data_is_rpn, mutabor::midi::NON_REGISTERED_PARAMETER_COARSE, mutabor::midi::NON_REGISTERED_PARAMETER_FINE, mutabor::midi::PITCH_BEND_SENSITIVITY, mutabor::midi::REGISTERED_PARAMETER_COARSE und mutabor::midi::REGISTERED_PARAMETER_FINE.

Wird benutzt von mutabor::CommonMidiOutput< T, D >::do_Controller() und mutabor::CommonMidiOutput< T, D >::OutputParameter().

265  {
266 
267  switch (message) {
269  return -1;
270 #if 0
271  // Don't send the parameter at this
272  // moment. the parameter should be
273  // sent when data is stored in the corresponding
274  // RPN/NRPN parameter
275  // nevertheess we may preprogramm the register
276  // address for later use, so return not -1
283  return 0x20000
286  }
287  return -1;
294  return get_index(0x10000
297  return -1;
298 #endif
303  if (!data_is_rpn
308  return 0x20000
311  } else if (data_is_rpn
316  return 0x10000
319  }
320  return -1;
321  }
322  return message;
323 
324  }
controller_vector controller
Definition: Device.h:491
int get_index(int message)
Definition: Device.h:265
int mutabor::BoxClass::get_index ( int  note)

Definiert in Zeile 796 der Datei Box.cpp.

Benutzt mutabor::hidden::mutabor_get_note_index() und mutabor::hidden::mutabor_box_type::tonesystem.

796  {
797  if (!box) return INT_MIN;
798  return mutabor_get_note_index(note, box->tonesystem);
799  }
tone_system * tonesystem
tone system.
Definition: box.h:144
struct mutabor_box_type * box
Definition: Box.h:810
int mutabor_get_note_index(int note, tone_system *system)
Definition: Interpre.h:384
controller_vector::const_iterator mutabor::ChannelData::get_next_changed_controller ( controller_vector::const_iterator  last) const
inline

Get the first changed controller.

Parameter
lastlast position of the iterator.
Rückgabe
Iterator to the first changed controller.
Noch zu erledigen:
Provide changed_controller iterator type

Definiert in Zeile 392 der Datei Device.h.

Benutzt mutabor::ChannelData::controller, mutabor::ChannelData::controller_changed und mutASSERT.

Wird benutzt von mutabor::CommonMidiOutput< T, D >::CopyProgramChange(), mutabor::CommonMidiOutput< T, D >::do_UpdateControllers() und mutabor::ChannelData::get_first_changed_controller().

392  {
393  mutASSERT(controller_changed.begin() <= last);
394  mutASSERT(last < controller_changed.end());
395  controller_vector::const_iterator retval = last;
396  do {
397  ++retval;
398  mutASSERT(retval == controller_changed.end()
399  || *retval == -1
400  || (size_t)(*retval) < controller.size());
401  } while (retval != controller_changed.end()
402  && (*retval == -1));
403  return retval;
404  }
controller_vector controller
Definition: Device.h:491
#define mutASSERT(expr)
controller_vector controller_changed
Definition: Device.h:492
controller_vector::const_iterator mutabor::ChannelData::get_next_changed_controller ( const ChannelData other,
controller_vector::const_iterator  last 
) const
inline

Get the first changed controller that differs from the corresponding controller in another channel.

Parameter
otherThe channel data we compare ourselves to.
lastlast position of the iterator.
Rückgabe
iterator to the first differently changed controller.

Definiert in Zeile 415 der Datei Device.h.

Benutzt mutabor::ChannelData::controller, mutabor::ChannelData::controller_changed und mutASSERT.

416  {
417  mutASSERT(controller_changed.begin() <= last);
418  mutASSERT(last < controller_changed.end());
419  controller_vector::const_iterator retval = last;
420  do {
421  ++retval;
422  mutASSERT(retval == controller_changed.end()
423  || *retval == -1
424  || (size_t)(*retval) < controller.size());
425  } while (retval != controller_changed.end()
426  && ((*retval == -1)
427  || ( *retval >= 0
428  && (size_t)(*retval) < other.controller.size()
429  && controller[*retval] == other.controller[*retval])));
430  return retval;
431  }
controller_vector controller
Definition: Device.h:491
#define mutASSERT(expr)
controller_vector controller_changed
Definition: Device.h:492
long mutabor::BoxClass::tone::get_pitch ( ) const
inline

Definiert in Zeile 185 der Datei Box.h.

Benutzt mutabor::hidden::MUT_INTERVAL::value.

Wird benutzt von mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >::pitch_and_bend().

185  {
186  return value >> 24;
187  }
int mutabor::ChannelData::get_program ( ) const
inline

Definiert in Zeile 487 der Datei Device.h.

Benutzt mutabor::ChannelData::Sound.

Wird benutzt von mutabor::CommonMidiOutput< T, D >::CopyProgramChange().

487 {return Sound; }
int mutabor::BoxClass::get_routefile_id ( ) const
inline

Definiert in Zeile 282 der Datei Box.h.

Benutzt mutabor::BoxClass::routefile_id.

Wird benutzt von mutaborGUI::MutFrame::CeToggleKey(), mutabor::BoxClass::dog_watching() und mutabor::BoxClass::GetLabel().

282  {
283  return routefile_id;
284  }
int routefile_id
Definition: Box.h:812
template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::get_routefile_id ( ) const
inline

Definiert in Zeile 396 der Datei Route.h.

396  {
397  return routefile_id;
398  }
int mutabor::Device::get_routefile_id ( ) const
inline

Definiert in Zeile 610 der Datei Device.h.

Benutzt mutabor::Device::routefile_id.

Wird benutzt von compat30::SaveRoutes().

610  {
611  return routefile_id;
612  }
int routefile_id
Definition: Device.h:648
size_t mutabor::BoxClass::get_session_id ( ) const
inline

Definiert in Zeile 241 der Datei Box.h.

Benutzt mutabor::BoxClass::session_id.

241  {
242  return session_id;
243  }
idtype< BoxClass > session_id
Definition: Box.h:811
template<class I = InputDevice, class O = OutputDevice, class B = Box>
size_t mutabor::TRouteClass< I, O, B >::get_session_id ( ) const
inline
size_t mutabor::Device::get_session_id ( ) const
inline

Definiert in Zeile 606 der Datei Device.h.

Benutzt mutabor::Device::session_id.

606  {
607  return session_id;
608  }
idtype< Device > session_id
Id used during runtime;.
Definition: Device.h:647
interval_type_constants mutabor::BoxClass::tone::get_type ( ) const
inline

Definiert in Zeile 165 der Datei Box.h.

Benutzt mutabor::hidden::mutabor_get_tone_type().

Wird benutzt von mutabor::BoxClass::GetCurrentTones().

165  {
166  return (interval_type_constants)
168  }
enum mutabor_interval_type_constants mutabor_get_tone_type(mutabor_tone tone)
Definition: Interpre.h:108
interval_type_constants
Definition: Box.h:130
mutint64 mutabor::BoxClass::tone::get_value ( ) const
inline

Definiert in Zeile 188 der Datei Box.h.

Benutzt mutabor::hidden::MUT_INTERVAL::value.

188  {
189  return value;
190  }
template<class I = InputDevice, class O = OutputDevice, class B = Box>
bool mutabor::TRouteClass< I, O, B >::GetActive ( ) const
inline

Definiert in Zeile 319 der Datei Route.h.

319  {
320  return Active;
321  }
template<class I = InputDevice, class O = OutputDevice, class B = Box>
Box mutabor::TRouteClass< I, O, B >::GetBox ( ) const
inline

Definiert in Zeile 327 der Datei Route.h.

Wird benutzt von mutaborGUI::Check() und mutabor::CommonMidiOutput< T, D >::do_UpdateTones().

327  {
328  return box;
329  }
Box mutabor::BoxClass::GetBox ( int  id,
boxidtype  kind 
)
static

Scan the list of Boxes for a given id.

id (int) id to scan for

Rückgabe
(Box) pointer to the input device with the given id if found, NULL else.

Definiert in Zeile 228 der Datei Box.cpp.

Benutzt UNREACHABLECT.

Wird benutzt von mutaborGUI::BoxDlg::AddButtonPressed(), mutaborGUI::MutFrame::CmDoActivate(), mutaborGUI::MutBoxShape::DoLeftDblClick(), mutabor::BoxClass::GetOrCreateBox() und mutaborGUI::MutBoxShape::readDialog().

229  {
230  for (typename listtype::iterator i = boxList.begin();
231  i != boxList.end();
232  i++) {
233  int devid;
234  switch (kind) {
235  case IDTypeSession:
236  devid = (*i)->get_session_id();
237  break;
238  case IDTypeFile:
239  devid = (*i)->get_routefile_id();
240  break;
241  default:
243  return *(boxList.end());
244  }
245  if (devid == id) {
246  return (*i);
247  }
248  }
249  return NULL;
250  }
static listtype boxList
Definition: Box.h:805
BoxClass(int id=-1)
Definition: Box.cpp:810
#define UNREACHABLECT(type)
Definition: debug.h:255
template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::GetBoxId ( )
inline

Definiert in Zeile 314 der Datei Route.h.

314  {
315  return boxid;
316  }
static const listtype& mutabor::BoxClass::GetBoxList ( )
inlinestatic
template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::GetChannel ( int  key,
size_t  channel,
size_t  id 
)
inline

Definiert in Zeile 245 der Datei Route.h.

245  {
246  if (channel == session_id())
247  return Out->GetChannel(key, channel, id);
248  return midi::NO_CHANNEL;
249  }
idtype< TRouteClass< I, O > > session_id
Definition: Route.h:473
OutputDevice Out
Definition: Route.h:463
int mutabor::BoxClass::GetChannel ( int  key,
size_t  channel,
size_t  id 
)

Get the MIDI channel of a given tone.

Parameter
noteNote that has been received
channelInternal unique channel id
idInternal unique Note id
Rückgabe
MIDI channel of the note

Definiert in Zeile 759 der Datei Box.cpp.

Benutzt mutabor::midi::NO_CHANNEL, mutabor::BoxClass::routes und TRACE.

Wird benutzt von mutabor::BoxClass::GetCurrentTones().

760  {
761  for (routeListType::const_iterator R = routes.begin();
762  R != routes.end(); R++) {
763  int c = (*R)->GetChannel(key,channel,id);
764 
765  if ( c != midi::NO_CHANNEL ) {
766  TRACE;
767  return c;
768  }
769  }
770  return midi::NO_CHANNEL;
771  }
#define TRACE
Definition: debug.h:245
routeListType routes
Definition: Box.h:813
int mutabor::OutputDeviceClass::GetChannel ( int  inkey,
size_t  channel,
size_t  id 
)
inline

Definiert in Zeile 883 der Datei Device.h.

Benutzt mutabor::OutputDeviceClass::do_GetChannel() und mutabor::OutputDeviceClass::write_lock.

883  {
884  ScopedLock lock(write_lock);
885  return do_GetChannel(inkey,channel,id);
886  }
wxMutexLocker ScopedLock
Definition: thread.h:57
virtual int do_GetChannel(int inkey, size_t channel, size_t id)=0
virtual ChannelData& mutabor::InputDeviceClass::GetChannelData ( const current_keys_type::entry key) const
pure virtual
BoxClass::current_tone_list mutabor::BoxClass::GetCurrentTones ( )

Definiert in Zeile 652 der Datei Box.cpp.

Benutzt mutabor::hidden::mutabor_box_type::file, mutabor::BoxClass::get_frequency(), mutabor::BoxClass::tone::get_type(), mutabor::BoxClass::GetChannel(), mutabor::BoxClass::tone_entry::invalid, mutabor::hidden::mutabor_box_type::key_count, mutabor::hidden::mutabor_empty_tone, mutabor::hidden::mutabor_find_key_in_box(), mutabor::hidden::mutabor_get_pitch_from_tone(), mutabor::hidden::mutabor_invalid_tone und mutabor::BoxClass::mutex.

653  {
654  ScopedLock lock(mutex);
655  current_tone_list retval;
656  if (!box) return retval;
657  struct mutabor_logic_parsed * file = box->file;
658  if (!file) return retval;
659  // no file means no logic (implying no current logic)
660 
661  int count = box->key_count;
662  if (!count) return retval;
663  retval.resize(count);
664 
665  size_t i = 0;
666  for (mutabor_note_type * key = mutabor_find_key_in_box(box,0);
667  key != NULL;
668  key = mutabor_find_key_in_box(box,key->next)) {
669 
670  int index = key->number;
671  tone t = get_frequency(index);
672 
673  switch (t.get_type()) {
674  case mutabor_empty_tone:
675  retval[i].index = index;
676  break;
678  retval[i].flag=tone_entry::invalid;
679  break;
680  default:
681  retval[i] = current_tone_entry(index,
683  key->id,
684  GetChannel(index, key->channel, key->id));
685  }
686  ++i;
687  }
688  return retval;
689  }
wxMutexLocker ScopedLock
Definition: thread.h:57
mutabor_note_type * mutabor_find_key_in_box(mutabor_box_type *box, size_t index)
Definition: box.h:181
struct mutabor_box_type * box
Definition: Box.h:810
std::vector< current_tone_entry > current_tone_list
Definition: Box.h:511
double mutabor_get_pitch_from_tone(mutabor_tone tone)
Convert an tone from half tone based pitch according to MIDI pitch numbers.
Definition: Interpre.h:286
struct mutabor_logic_parsed * file
Definition: box.h:155
tone get_frequency(int note)
Definition: Box.cpp:789
Mutex mutex
Definition: Box.h:834
int GetChannel(int key, size_t channel, size_t id)
Get the MIDI channel of a given tone.
Definition: Box.cpp:759
template<class T , class P , class L >
CommonTypedDeviceAPI< T, P, L >::DevicePtr mutabor::CommonTypedDeviceAPI< T, P, L >::GetDevice ( int  id,
devidtype  kind 
)
static

Scan the list of input devices for a given id.

id (int) id to scan for

Rückgabe
(OutputDevice) pointer to the input device with the given id if found, NULL else.

Definiert in Zeile 226 der Datei Device.cpp.

Benutzt UNREACHABLECT.

227  {
228  for (typename listtype::iterator i = deviceList.begin();
229  i != deviceList.end();
230  i++) {
231  int devid;
232  switch (kind) {
233  case IDTypeSession:
234  devid = (*i)->get_session_id();
235  break;
236  case IDTypeFile:
237  devid = (*i)->get_routefile_id();
238  break;
239  case IDTypeHardware:
240  default:
242  return *(deviceList.end());
243  }
244  if (devid == id) {
245  return (*i);
246  }
247  }
248  return NULL;
249  }
static listtype deviceList
Definition: Device.h:694
#define UNREACHABLECT(type)
Definition: debug.h:255
template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::GetDeviceId ( )
inline

Definiert in Zeile 307 der Datei Route.h.

307  {
308  return inputid;
309  }
template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::GetDeviceId ( )
inline

Definiert in Zeile 311 der Datei Route.h.

311  {
312  return outputid;
313  }
template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
static const listtype& mutabor::CommonTypedDeviceAPI< T, P, L >::GetDeviceList ( )
inlinestatic

Definiert in Zeile 752 der Datei Device.h.

752  {
753  return deviceList ;
754  }
static listtype deviceList
Definition: Device.h:694
ChordNote * GisWriteHead::GetFreeNote ( )

Definiert in Zeile 1030 der Datei GIS_Head.cpp.

Benutzt ChordNote::AddGis(), CNNoteOn und ChordNote::Next.

1031 {
1032  if ( !ChordNotes )
1033  return ChordNotes = new ChordNote(this);
1034 
1035  ChordNote **ANote = &ChordNotes;
1036 
1037  while ( *ANote ) {
1038  if ( !((*ANote)->Status & CNNoteOn) ) {
1039  if ( (*ANote)->CurrentTime )
1040  (*ANote)->AddGis(new GisNote("_", "", 0, (*ANote)->CurrentTime, " ", 0));
1041 
1042  return *ANote;
1043  }
1044 
1045  ANote = &(*ANote)->Next;
1046  }
1047 
1048  *ANote = new ChordNote(ChordNotes);
1049 
1050  return *ANote;
1051 }
ChordNote * ChordNotes
Definition: GIS_Head.h:324
void AddGis(GisToken *token)
Definition: GIS_Head.cpp:852
ChordNote * Next
Definition: GIS_Head.h:433
Definition: GIS.h:423
#define CNNoteOn
Definition: GIS_Head.h:423
GisType GetGisType ( GisToken token)

Definiert in Zeile 824 der Datei GIS.cpp.

Benutzt GTNull und GisToken::Type().

Wird benutzt von CloseAllSubs(), GetMidiInstrument(), GetReal(), GetTheSpeedFactor(), mutabor::MutaborTag(), ChordNote::MutNoteOff(), mutabor::InputGis::Proceed() und MisFile::WriteGis().

825 {
826  if ( token )
827  return token->Type();
828  else
829  return GTNull;
830 }
Definition: GIS.h:100
virtual GisType Type() const
Definition: GIS.h:136
template<class I = InputDevice, class O = OutputDevice, class B = Box>
const InputDevice& mutabor::TRouteClass< I, O, B >::GetInputDevice ( ) const
inline

Definiert in Zeile 166 der Datei Route.h.

Wird benutzt von mutaborGUI::Check().

166  {
167  return In;
168  }
InputDevice In
Definition: Route.h:464
template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::GetInputFrom ( ) const
inline

Definiert in Zeile 347 der Datei Route.h.

Wird benutzt von mutabor::InputMidiPort::Save() und mutabor::InputMidiFile::Save().

347  {
348  return IFrom;
349  }
template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::GetInputTo ( ) const
inline

Definiert in Zeile 363 der Datei Route.h.

Wird benutzt von mutabor::InputMidiPort::Save() und mutabor::InputMidiFile::Save().

363  {
364  return ITo;
365  }
int GisNote::GetKey ( )

Definiert in Zeile 388 der Datei GIS.cpp.

Benutzt Acc2Int(), GisNote::Accedentials, Name2Key() und GisNote::Octave.

390 {
391  int Key = Name2Key(Name);
392 
393  if ( Key == -1 ) return -1;
394 
395  Key += ( Octave + 5) * 12;
396 
397  Key += Acc2Int(Accedentials);
398 
399  return Key;
400 }
std::string Name
Definition: GIS.h:427
int Octave
Definition: GIS.h:429
int Name2Key(const std::string name)
Definition: GIS.cpp:275
int Acc2Int(const std::string &acc)
Definition: GIS.cpp:308
std::string Accedentials
Definition: GIS.h:428
virtual std::string mutabor::BoxClass::GetLabel ( )
inlinevirtual

Definiert in Zeile 263 der Datei Box.h.

Benutzt _mut, mutabor::Box0, mutabor::BoxClass::get_routefile_id(), mutabor::BoxClass::GetType(), mutabor::GmnBox, mutabor::NewBox und mutabor::NoBox.

263  {
264  switch (GetType()) {
265  case NewBox:
266  return _mut("New box");
267  case NoBox:
268  return _mut("No box");
269  case GmnBox:
270  return _mut("GUIDO box");
271  case Box0:
272  return (boost::format(_mut("Box %d"))
273  % get_routefile_id()).str();
274  }
275  return _mut("Unknown box type");
276  }
int get_routefile_id() const
Definition: Box.h:282
#define _mut
Definition: Defs.h:117
virtual BoxType GetType()
Definition: Box.h:245
BoxClass::logic_list mutabor::BoxClass::GetLogics ( )

Get a list of currently defined logics.

Zu beachten
: this function replaces GetMutTag() from Runtime.cpp
Rückgabe
List of logic descriptions.

Definiert in Zeile 596 der Datei Box.cpp.

Benutzt mutabor::append_triggers(), mutabor::hidden::mutabor_box_type::current_logic, mutabor::hidden::mutabor_box_type::file, mutabor::hidden::mutabor_logic_parsed::global_harmonies, mutabor::hidden::mutabor_logic_parsed::global_keystrokes, mutabor::hidden::mutabor_logic_parsed::global_midi_inputs, mutabor::hidden::logik::harmony_list, mutabor::hidden::logik::keystroke_list, mutabor::hidden::logik::midi_input_list und mutabor::BoxClass::mutex.

596  {
597  ScopedLock lock(mutex);
598  logic_list retval;
599  if (!box) return retval;
600  struct mutabor_logic_parsed * file = box->file;
601  if (!file) return retval;
602  // no file means no logic (implying no current logic)
603 
604  struct mutabor::hidden::logik * logic = box->current_logic;
605  append_triggers (retval, box, logic, file->global_keystrokes );
606  append_triggers (retval, box, logic, file->global_harmonies );
607  append_triggers (retval, box, logic, file->global_midi_inputs);
608  if (logic) {
609  append_triggers(retval, box, logic, logic->keystroke_list );
610  append_triggers(retval, box, logic, logic->harmony_list );
611  append_triggers(retval, box, logic, logic->midi_input_list);
612  }
613  return retval;
614  }
wxMutexLocker ScopedLock
Definition: thread.h:57
struct harmonie_ereignis * harmony_list
Definition: Global.h:453
struct mutabor_box_type * box
Definition: Box.h:810
struct logik * current_logic
Definition: box.h:148
std::list< logic_entry > logic_list
Definition: Box.h:468
struct midi_ereignis * midi_input_list
Definition: Global.h:455
struct mutabor_logic_parsed * file
Definition: box.h:155
Mutex mutex
Definition: Box.h:834
static void append_triggers(BoxClass::logic_list &list, mutabor_box_type *box, struct mutabor::hidden::logik *logic, struct keyboard_ereignis *keystrokes)
Definition: Box.cpp:512
struct keyboard_ereignis * keystroke_list
Definition: Global.h:454
GisWriteHead * GetMatchingHeader ( GisWriteHead **  head,
const std::string  id 
)

Definiert in Zeile 1435 der Datei GIS_Head.cpp.

Benutzt h, GisWriteHead::Id, GisWriteHead::InsertAfter(), GisWriteHead::Next und GisWriteHead::Prev.

Wird benutzt von GisWriteHeadGis().

1436 {
1437  GisWriteHead *h = *head, *LastHead = 0;
1438  GisWriteHead *Boss = h;
1439  size_t BossIdLength = h->Id.length();
1440  char CmpRes = 0;
1441  // search header
1442 
1443  while ( h ) {
1444 
1445 
1446  if ( (!id.compare(0,h->Id.length(),h->Id)) && (h->Id.length() >= BossIdLength) ) {
1447  Boss = h;
1448  BossIdLength = h->Id.length() + 1;
1449  }
1450  CmpRes = h->Id.compare(id);
1451  if ( CmpRes >= 0 ) break;
1452 
1453 #if 0
1454  if ( !strncmp(h->Id, id, strlen(h->Id)) && (strlen(h->Id) >= BossIdLength) ) {
1455  Boss = h;
1456  BossIdLength = strlen(h->Id) + 1;
1457  }
1458 
1459  CmpRes = strcmp(h->Id, id);
1460 
1461  if ( CmpRes >= 0 ) break;
1462 
1463 #endif
1464  LastHead = h;
1465 
1466  h = h->Next;
1467  }
1468 
1469  if ( CmpRes ) // insert a new header
1470  {
1471  h = new GisWriteHead(Boss, id);
1472 
1473  if ( LastHead ) // not at the first position
1474  h->InsertAfter(LastHead);
1475  else // first position in header list
1476  {
1477  h->Prev = (GisWriteHead*)head;
1478  h->Next = *head;
1479 
1480  if ( *head ) (*head)->Prev = h;
1481 
1482  *head = h;
1483  }
1484  }
1485 
1486  return h;
1487 }
GisReadArtHead * h
Definition: mutgis.cpp:5
GisWriteHead * Next
Definition: GIS_Head.h:316
GisWriteHead * InsertAfter(GisWriteHead *position)
Definition: GIS_Head.cpp:990
std::string Id
Definition: GIS_Head.h:321
GisWriteHead * Prev
Definition: GIS_Head.h:316
char GetMidiInstrument ( GisToken token)

Definiert in Zeile 55 der Datei GIS_Head.cpp.

Benutzt DEBUGLOG2, GetGisType() und GTParaStr.

Wird benutzt von GisReadArtHead::Read().

56 {
57  if ( token && GetGisType(token) == GTParaStr ) {
58  std::string v;
59  int value = 0;
60  std::string t=boost::to_upper_copy(((GisParaStr*)token)->s);
61  DEBUGLOG2(gmnfile,("t= %s"), t.c_str());
62 
63  if (t.substr(0,4) == "MIDI") {
64  try {
65  value = boost::lexical_cast<int>(t.substr(4));
66  } catch( boost::bad_lexical_cast const& ) {
67  }
68  DEBUGLOG2(gmnfile,("v= %s"), v.c_str());
69  return (char) value;
70  }
71 
72 #if 0
73  strncpy(t, ((GisParaStr*)token)->s, 30);
74 
75  strupr(t);
76 
77  if ( !strncmp(t, "MIDI", 4) )
78  return atoi(&t[4]);
79 
80 #endif
81  }
82 
83  return 0;
84 }
#define DEBUGLOG2(level,...)
Definition: debug.h:241
GisType GetGisType(GisToken *token)
Definition: GIS.cpp:824
Definition: GIS.h:110
MutaborModeType mutabor::Device::GetMode ( )
inline

Definiert in Zeile 578 der Datei Device.h.

Benutzt mutabor::Device::Mode.

Wird benutzt von CommonFileDeviceTest::testTimer().

578  {
579  return Mode;
580  }
enum MutaborModeType Mode
Definition: Device.h:652
const std::string& mutabor::Device::GetName ( ) const
inline

Definiert in Zeile 587 der Datei Device.h.

Benutzt mutabor::Device::Name.

Wird benutzt von mutaborGUI::MutOutputMidiFileDeviceShape::InitializeDialog() und mutaborGUI::MutOutputMidiDeviceShape::readDialog().

587  {
588  return Name;
589  }
std::string Name
Definition: Device.h:649
static int mutabor::BoxClass::GetNextFreeBox ( )
inlinestatic
static mutint64 mutabor::InputDeviceClass::GetNO_DELTA ( )
inlinestatic

Definiert in Zeile 1240 der Datei Device.h.

Benutzt mutint64.

Wird benutzt von mutabor::InputDeviceClass::IsDelta(), testCommonFileDeviceTimer::PrepareNextEvent(), mutabor::InputGis::ReadOn() und mutabor::CommonFileInputDevice::ThreadPlay().

1240  {
1241  return mutint64(std::numeric_limits<mutint64>::max());
1242  }
#define mutint64
Definition: Defs.h:89
ChordNote * GisWriteHead::GetNote ( int  instrId,
int  taste 
)

Definiert in Zeile 1054 der Datei GIS_Head.cpp.

Benutzt ChordNote::CheckId() und ChordNote::Next.

1055 {
1056  ChordNote *ANote = ChordNotes;
1057 
1058  while ( ANote ) {
1059  if ( ANote->CheckId(instrId, taste) )
1060  break;
1061 
1062  ANote = ANote->Next;
1063  }
1064 
1065  return ANote;
1066 }
ChordNote * ChordNotes
Definition: GIS_Head.h:324
ChordNote * Next
Definition: GIS_Head.h:433
char CheckId(int instrId, int taste)
Definition: GIS_Head.h:507
Box mutabor::BoxClass::GetOrCreateBox ( int  id)
inlinestatic

Return the box that is associated with the corrent id.

In case such a box does not exist the box is created

Parameter
idId to be fetched.
Rückgabe
Box that has been found or created

Definiert in Zeile 983 der Datei Box.h.

Benutzt mutabor::Box0, mutabor::BoxFactory::Create(), mutabor::BoxClass::GetBox() und mutabor::BoxClass::IDTypeFile.

Wird benutzt von mutaborGUI::GUIRouteFactory::DoCreateBoxChannelShape(), mutabor::TRouteClass< I, O, B >::Load(), compat30::LoadRoutes(), mutabor::MutaborTag() und mutaborGUI::MutBoxShape::readDialog().

983  {
984  Box b = GetBox(id,IDTypeFile);
985  if (b) return b;
986  else if (id > Box0)
987  return BoxFactory::Create(Box0,id);
988  else return BoxFactory::Create(id);
989  }
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:121
static Box GetBox(int id, boxidtype kind)
Scan the list of Boxes for a given id.
Definition: Box.cpp:228
static Box Create(int type, int id=NewBox)
Definition: Box.h:899
template<class I = InputDevice, class O = OutputDevice, class B = Box>
const OutputDevice& mutabor::TRouteClass< I, O, B >::GetOutputDevice ( ) const
inline

Definiert in Zeile 162 der Datei Route.h.

Wird benutzt von mutaborGUI::Check().

162  {
163  return Out;
164  }
OutputDevice Out
Definition: Route.h:463
template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::GetOutputFrom ( ) const
inline
template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::GetOutputTo ( ) const
inline
GisToken * GisTag::GetPara ( int  nr)

Definiert in Zeile 222 der Datei GIS.cpp.

Benutzt GisToken::Next und Para.

223 {
224  GisToken *P = Para;
225 
226  while ( P ) {
227  if ( nr <= 1 ) break;
228 
229  P = P->Next;
230 
231  nr--;
232  }
233 
234  return P;
235 }
Definition: GIS.h:116
GisToken * Para
Definition: GIS.h:272
GisToken * Next
Definition: GIS.h:120
GisType GisTag::GetParaType ( int  nr)

Definiert in Zeile 204 der Datei GIS.cpp.

Benutzt GTNull, GisToken::Next, Para und GisToken::Type().

205 {
206  GisToken *P = Para;
207 
208  while ( P ) {
209  if ( nr <= 1 ) break;
210 
211  P = P->Next;
212 
213  nr--;
214  }
215 
216  if ( P )
217  return P->Type();
218  else
219  return GTNull;
220 }
Definition: GIS.h:100
Definition: GIS.h:116
GisToken * Para
Definition: GIS.h:272
GisToken * Next
Definition: GIS.h:120
virtual GisType Type() const
Definition: GIS.h:136
double GetReal ( GisToken token)

Definiert in Zeile 45 der Datei GIS_Head.cpp.

Benutzt GetGisType(), GTParaInt und GTParaReal.

Wird benutzt von GisReadArtHead::Read().

46 {
47  if ( GetGisType(token) == GTParaInt )
48  return (double) ((GisParaInt*)token)->i;
49  else if ( GetGisType(token) == GTParaReal )
50  return ((GisParaReal*)token)->x;
51 
52  return 0;
53 }
Definition: GIS.h:108
GisType GetGisType(GisToken *token)
Definition: GIS.cpp:824
template<class I = InputDevice, class O = OutputDevice, class B = Box>
static const routeListType& mutabor::TRouteClass< I, O, B >::GetRouteList ( )
inlinestatic

Definiert in Zeile 404 der Datei Route.h.

404  {
405  return routeList;
406  }
static routeListType routeList
Definition: Route.h:472
const routeListType& mutabor::BoxClass::GetRoutes ( ) const
inline

Definiert in Zeile 331 der Datei Box.h.

Benutzt mutabor::BoxClass::routes.

Wird benutzt von mutaborGUI::Check().

331  {
332  return routes;
333  }
routeListType routes
Definition: Box.h:813
routeListType& mutabor::BoxClass::GetRoutes ( )
inline

Definiert in Zeile 335 der Datei Box.h.

Benutzt mutabor::BoxClass::routes.

335  {
336  return routes;
337  }
routeListType routes
Definition: Box.h:813
template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
const routeListType& mutabor::CommonTypedDeviceAPI< T, P, L >::GetRoutes ( ) const
inline

Definiert in Zeile 743 der Datei Device.h.

Wird benutzt von mutaborGUI::Check().

743  {
744  return routes;
745  }
routeListType routes
Definition: Device.h:653
template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
routeListType& mutabor::CommonTypedDeviceAPI< T, P, L >::GetRoutes ( )
inline

Definiert in Zeile 747 der Datei Device.h.

747  {
748  return routes;
749  }
routeListType routes
Definition: Device.h:653
int GetSep ( )

Definiert in Zeile 192 der Datei GSP.cpp.

Benutzt CHAR0, CHAR1, CharIn(), CurrentLine, CurrentPos, DEBUGLOG2, DoError(), Eof, GspCurrentLineNr, GspError, Komma, NEW_LINE, ParaMode, ReadNewLine(), Sep, SepChars, SepPos und TAKESEP.

Wird benutzt von DoParse(), GspParse(), ReadLong(), ReadNote(), ReadParaNumber(), ReadParaStr() und ReadTag().

193 {
194  Sep = "";
195 #if 0
196  SepPos = 0;
197 #endif
198  Komma = 0;
199  int RemDeep = 0;
200  int RemLine = 0;
201 
202  while ( !Eof && !GspError ) {
203  DEBUGLOG2(other,("%d >= %d? Sep.Len=%d"),
204  (int)CurrentPos,(int)CurrentLine.length(),(int)Sep.length());
205  DEBUGLOG2(other,("%s"),CurrentLine.c_str());
206  if (CurrentPos >= CurrentLine.length()) {
207 
208  if ( ReadNewLine() ) {
209  DoError(32);
210  Sep = Sep.substr(0,1);
211  DEBUGLOG2(other,("Returning 1 at with (%d) '%s'"),
212  (int)SepPos, Sep.c_str());
213  return Sep.length();
214  }
215 
216  RemLine = 0;
217  if ( GspCurrentLineNr != 1 )
218  Sep += NEW_LINE;
219  continue;
220  }
221 
222  char c = CHAR0;
223 
224  // comment start
225  if ( c == '(' && CHAR1 == '*' ) {
226  TAKESEP;
227  TAKESEP;
228  RemDeep++;
229  continue;
230  }
231 
232  // during a comment
233  if ( RemDeep ) {
234  if ( c == '*' && CHAR1 == ')' ) {
235  TAKESEP;
236  TAKESEP;
237  RemDeep--;
238  } else
239  TAKESEP;
240  continue;
241  }
242 
243  if ( RemLine ) {
244  TAKESEP;
245  continue;
246  }
247 
248  // line comment
249  if ( c == '%' ) {
250  RemLine = 1;
251  continue;
252  }
253 
254  // separating chars
255  if ( CharIn(c, SepChars) ) {
256  TAKESEP;
257  continue;
258  }
259 
260  // sequenz separator
261  if ( c == ',' && ParaMode ) {
262  TAKESEP;
263  Komma = 1;
264  continue;
265  }
266 
267  break;
268  }
269 
270  DEBUGLOG2(other,("Returning with (%d) '%s'"),(int)Sep.length(),Sep.c_str());
271 
272  Sep += "\0";
273  return SepPos;
274 }
int Eof
Definition: GSP_File.cpp:38
#define TAKESEP
Definition: GSP.cpp:188
char SepChars[]
Definition: GSP.cpp:73
int ReadNewLine()
Definition: GSP_File.cpp:83
#define CHAR0
Definition: GSP.cpp:179
int GspError
Definition: GSP.cpp:32
char Komma
Definition: GSP.cpp:54
std::string Sep
Definition: GSP.cpp:39
#define NEW_LINE
Definition: GSP.cpp:72
char ParaMode
Definition: GSP.cpp:53
#define CHAR1
Definition: GSP.cpp:180
std::string CurrentLine
Definition: GSP_File.cpp:36
size_t CurrentPos
Definition: GSP_File.cpp:37
#define DEBUGLOG2(level,...)
Definition: debug.h:241
int DoError(int nr, int pos=-1)
Definition: GSP.cpp:142
int GspCurrentLineNr
Definition: GSP.cpp:28
#define SepPos
Definition: GSP.cpp:46
int CharIn(char c, const char *s)
Definition: GSP.cpp:89
int GetTagId ( const std::string &  name,
std::string &  registered 
)

Definiert in Zeile 832 der Datei GIS.cpp.

Benutzt DEBUGLOG2, NTAGS, NTAGSHORTS, Tags und TagShorts.

Wird benutzt von GisTag::GisTag().

834 {
835  if (name.empty()) {
836  registered = Tags[0];
837  return 0;
838  }
839 
840  // check normal form
841  int i;
842 
843  for (i = 0; i < NTAGS; i++) {
844  DEBUGLOG2(gmnfile,("comparing '%s' with tag'%s'"),name.c_str(),Tags[i]);
845  if ( name == Tags[i]) {
846  registered = Tags[i];
847  return i;
848  } ;
849  }
850 
851  // check short form
852  for (i = 0; i < NTAGSHORTS; i++) {
853  DEBUGLOG2(gmnfile,("comparing '%s' with tag'%s'"),name.c_str(),TagShorts[i]);
854 
855  if ( name == TagShorts[i] ) {
856  registered = TagShorts[i];
857  return i;
858  }
859  }
860 
861  // no registered tag
862  registered = "";
863 
864  return -1;
865 }
const char * TagShorts[NTAGSHORTS]
Definition: GIS.cpp:96
const char * Tags[NTAGS]
Definition: GIS.cpp:40
#define NTAGS
Definition: GIS.h:67
#define DEBUGLOG2(level,...)
Definition: debug.h:241
const char * name
Definition: Global.h:446
#define NTAGSHORTS
Definition: GIS.h:68
mutint64 GetTheSpeedFactor ( GisToken token)

This function returns the speed factor that must be multiplied to the duration value in order to get a delta timestamp in μs.

Parameter
tokenToken to be parsed in the form numerator/denominator = bpm.
Rückgabe
fraction in μs for 1/1 duration.

Definiert in Zeile 96 der Datei GIS_Head.cpp.

Benutzt DEBUGLOG2, GetGisType(), GTParaStr, mutint64 und ZIFFER.

Wird benutzt von GisReadArtHead::Read().

97 {
98  DEBUGLOG2(gmnfile,("%p"),(void*)token);
99 
100  mutint64 retval = 2l * 1000l * 1000l; // 1/4 = 120bpm => 1/1 = 2s
101 
102  if ( token && GetGisType(token) == GTParaStr ) {
103  const std::string &t = ((GisParaStr*) token) -> s;
104 
105  DEBUGLOG2(gmnfile,("%s"),t.c_str());
106 
107  size_t i = 0;
108 
109  mutint64 numerator = 0, denominator = 0, bpm=0;
110 
111  // trim value
112  while ( !ZIFFER && t[i] )
113  i++;
114 
115  while ( ZIFFER )
116  numerator = numerator*10 + (t[i++]-('0'));
117 
118  while ( !ZIFFER && t[i] )
119  i++;
120 
121  while ( ZIFFER )
122  denominator = denominator*10 + (t[i++]-('0'));
123 
124  while ( !ZIFFER && t[i] )
125  i++;
126 
127  while ( ZIFFER )
128  bpm = bpm*10 + (t[i++]-('0'));
129 
130  DEBUGLOG2(gmnfile,("%ld / %ld / %ld"),denominator, numerator, bpm);
131 
132 
133  if ( numerator && denominator && bpm > 0 ) {
134  retval = (denominator * 60*1000*1000) / (numerator * bpm); // 1/1 = 1bpm => 60s per measure
135  }
136  }
137  DEBUGLOG2(gmnfile,("Returning factor %d"), retval);
138 
139  return retval;
140 }
#define ZIFFER
Definition: GIS_Head.cpp:86
#define DEBUGLOG2(level,...)
Definition: debug.h:241
#define mutint64
Definition: Defs.h:89
GisType GetGisType(GisToken *token)
Definition: GIS.cpp:824
Definition: GIS.h:110
BoxClass::tone_system mutabor::BoxClass::GetToneSystem ( )

Definiert in Zeile 616 der Datei Box.cpp.

Benutzt mutabor::BoxClass::tone_system::anchor, mutabor::hidden::TSYS::anker, mutabor::hidden::mutabor_box_type::file, mutabor::BoxClass::tone_entry::invalid, mutabor::hidden::mutabor_active_tone, mutabor::hidden::mutabor_empty_tone, mutabor::hidden::mutabor_get_pitch_from_interval(), mutabor::hidden::mutabor_get_pitch_from_tone(), mutabor::hidden::mutabor_get_tone_type(), mutabor::hidden::mutabor_invalid_tone, MUTABOR_KEYRANGE_MAX_WIDTH, mutASSERT, mutabor::BoxClass::mutex, mutabor::BoxClass::tone_system::period, mutabor::hidden::TSYS::periode, mutabor::hidden::TSYS::ton, mutabor::BoxClass::tone_system::tones und mutabor::hidden::mutabor_box_type::tonesystem.

616  {
617  ScopedLock lock(mutex);
618  tone_system retval;
619  if (!box) return retval;
620  struct mutabor_logic_parsed * file = box->file;
621  if (!file) return retval;
622  // no file means no logic (implying no current logic)
623 
624  hidden::tone_system * system = box->tonesystem;
625  if (!system)
626  return retval;
627  retval.anchor = system->anker;
628  retval.period =
629  mutabor_get_pitch_from_interval(system->periode);
630  int width = system -> breite;
631  if (width <= 0)
632  return retval;
633  retval.tones.resize(width);
635  for (int i = 0 ; i < width; i++) {
636  mutabor_tone t = system->ton[i];
637  switch (mutabor_get_tone_type(t)) {
638  case mutabor_empty_tone:
639  break;
641  retval.tones[i].flag = tone_entry::invalid;
642  break;
643  case mutabor_active_tone:
644  default:
645  retval.tones[i] =
646  tone_entry(mutabor_get_pitch_from_tone(t));
647  }
648  }
649  return retval;
650  }
enum mutabor_interval_type_constants mutabor_get_tone_type(mutabor_tone tone)
Definition: Interpre.h:108
tone_system * tonesystem
tone system.
Definition: box.h:144
struct mutabor::hidden::TSYS tone_system
wxMutexLocker ScopedLock
Definition: thread.h:57
double mutabor_get_pitch_from_interval(mutabor_interval interval)
Convert an interval from half tone based pitch according to MIDI pitch numbers.
Definition: Interpre.h:203
#define mutASSERT(expr)
struct mutabor_box_type * box
Definition: Box.h:810
#define MUTABOR_KEYRANGE_MAX_WIDTH
Definition: Global.h:78
mutabor_interval mutabor_tone
Definition: Interpre.h:85
double mutabor_get_pitch_from_tone(mutabor_tone tone)
Convert an tone from half tone based pitch according to MIDI pitch numbers.
Definition: Interpre.h:286
struct mutabor_logic_parsed * file
Definition: box.h:155
Mutex mutex
Definition: Box.h:834
virtual BoxType mutabor::BoxClass::GetType ( )
inlinevirtual

Definiert in Zeile 245 der Datei Box.h.

Benutzt mutabor::Box0 und mutabor::BoxClass::routefile_id.

Wird benutzt von mutabor::BoxClass::GetLabel() und mutabor::BoxClass::GetTypeName().

245  {
246  return routefile_id >= Box0 ? Box0 : (BoxType) routefile_id;
247  }
BoxType
Definition: Box.h:112
int routefile_id
Definition: Box.h:812
template<class I = InputDevice, class O = OutputDevice, class B = Box>
RouteType mutabor::TRouteClass< I, O, B >::GetType ( ) const
inline

Definiert in Zeile 335 der Datei Route.h.

Wird benutzt von mutabor::InputMidiPort::Load(), mutabor::InputMidiFile::Load(), mutabor::InputMidiPort::Save() und mutabor::InputMidiFile::Save().

335  {
336  return Type;
337  }
RouteType Type
Definition: Route.h:480
virtual DevType mutabor::OutputDeviceClass::GetType ( ) const
inlinevirtual

Erneute Implementation in mutabor::OutputMidiFile, mutabor::OutputMidiPort und mutabor::OutputGis.

Definiert in Zeile 938 der Datei Device.h.

Benutzt mutabor::DTUnknown.

938  {
939  return DTUnknown;
940  }
virtual size_t mutabor::BoxFactory::GetType ( )
inlineprotectedvirtual

Definiert in Zeile 945 der Datei Box.h.

Benutzt mutabor::Box0.

945 { return Box0; };
virtual DevType mutabor::InputDeviceClass::GetType ( ) const
inlinevirtual

Erneute Implementation in mutabor::InputMidiFile, mutabor::InputMidiPort und mutabor::InputGis.

Definiert in Zeile 1231 der Datei Device.h.

Benutzt mutabor::DTUnknown.

1232  {
1233  return DTUnknown;
1234  }
virtual size_t mutabor::DeviceFactory::GetType ( ) const
protectedpure virtual
virtual std::string mutabor::BoxClass::GetTypeName ( )
inlinevirtual

Definiert in Zeile 249 der Datei Box.h.

Benutzt _mut, mutabor::Box0, mutabor::BoxClass::GetType(), mutabor::GmnBox, mutabor::NewBox und mutabor::NoBox.

249  {
250  switch (GetType()) {
251  case NewBox:
252  return _mut("New box");
253  case NoBox:
254  return _mut("No box");
255  case GmnBox:
256  return _mut("GUIDO Music Notation box");
257  case Box0:
258  return _mut("Mutabor box");
259  }
260  return _mut("Unknown box type");
261  }
#define _mut
Definition: Defs.h:117
virtual BoxType GetType()
Definition: Box.h:245
template<class I = InputDevice, class O = OutputDevice, class B = Box>
const std::string& mutabor::TRouteClass< I, O, B >::GetTypeName ( )
inline

Definiert in Zeile 343 der Datei Route.h.

343  {
344  return RTName[Type];
345  }
RouteType Type
Definition: Route.h:480
const std::string RTName[]
Definition: Route.cpp:49
virtual std::string mutabor::Device::GetTypeName ( ) const
inlinevirtual
virtual std::string mutabor::OutputDeviceClass::GetTypeName ( ) const
inlinevirtual

Erneute Implementation von mutabor::Device.

Erneute Implementation in mutabor::OutputMidiFile, mutabor::OutputMidiPort, mutabor::OutputGis und mutabor::CommonFileOutputDevice.

Definiert in Zeile 942 der Datei Device.h.

Benutzt _mutN.

942  {
943  return _mutN("Undefined output device");
944  }
#define _mutN(x)
Definition: Defs.h:116
virtual std::string mutabor::InputDeviceClass::GetTypeName ( ) const
inlinevirtual

Erneute Implementation von mutabor::Device.

Erneute Implementation in mutabor::InputMidiFile, mutabor::InputMidiPort, mutabor::CommonFileInputDevice und mutabor::InputGis.

Definiert in Zeile 1236 der Datei Device.h.

Benutzt _mutN.

1236  {
1237  return _mutN("Undefined input device");
1238  }
#define _mutN(x)
Definition: Defs.h:116
template<class I , class O , class B >
void * mutabor::TRouteClass< I, O, B >::getUserData ( ) const
protectedvirtual

Definiert in Zeile 134 der Datei Route.cpp.

135  {
136  return userdata;
137  }
virtual void* mutabor::Device::getUserData ( ) const
inlineprotectedvirtual
void mutabor::OutputDeviceClass::Gis ( GisToken token,
char  turn 
)
inline

Definiert in Zeile 887 der Datei Device.h.

Benutzt mutabor::OutputDeviceClass::do_Gis() und mutabor::OutputDeviceClass::write_lock.

887  {
888  ScopedLock lock(write_lock);
889  do_Gis(token,turn);
890  }
virtual void do_Gis(GisToken *token, char turn)=0
wxMutexLocker ScopedLock
Definition: thread.h:57
GisNote::GisNote ( int  key,
int  octave,
int  acc,
const std::string &  sep = "",
GisToken next = 0 
)

Definiert in Zeile 343 der Datei GIS.cpp.

Benutzt GisNote::Accedentials, GisNote::Duration, GMN_NO_KEY, octave, GisNote::Octave und strdupchr.

348  : GisToken(sep, next)
349 {
350  if ( key == GMN_NO_KEY ) {
351  Name = "_";
352  Accedentials = "";
353  ;
354  Octave = 0;
355  } else {
356  char Flats[] = "cddeefggaabb";
357  char FlatsA[] = " & & & & & ";
358  char Sharps[] = "ccddeffggaab";
359  char SharpsA[] = " # # # # # ";
360  char accs;
361  int Index = key % 12;
362  int Abstand = key /12;
363 
364  if ( Index < 0 ) {
365  Index += 12;
366  Abstand--;
367  }
368 
369  if ( acc < 0 ) {
370  Name = Flats[Index];
371  accs = FlatsA[Index];
372  } else {
373  Name = strdupchr(Sharps[Index]);
374  accs = SharpsA[Index];
375  }
376 
377  if ( accs != ' ' )
378  Accedentials = strdupchr(accs);
379  else
380  Accedentials = "";
381 
382  Octave = Abstand - 5 - octave;
383  }
384 
385  Duration = 0;
386 }
#define GMN_NO_KEY
Definition: GIS.h:89
#define strdupchr(a)
Definition: GIS.cpp:331
std::string Name
Definition: GIS.h:427
static int octave
Definition: GSP.cpp:66
GisToken(const std::string &sep="", GisToken *next=0)
Definition: GIS.h:123
int Octave
Definition: GIS.h:429
mutabor::frac Duration
Definition: GIS.h:430
std::string Accedentials
Definition: GIS.h:428
GisToken * GisParse ( const std::string  FileName)

Definiert in Zeile 882 der Datei GIS.cpp.

Benutzt Current, DEBUGLOG2, GspParse(), LastOpenBracket, LastOpenRange, LastPara, Para, Root, TagMode, TagName, TagSep und UnRavel().

Wird benutzt von GetInFile(), main() und mutabor::InputGis::Open().

883 {
884  Root = 0;
885  Current = &Root;
886  LastOpenBracket = 0;
887  LastOpenRange = 0;
888  TagMode = 0;
889  TagName = "";
890  TagSep = "";
891  Para = 0;
892  LastPara = 0;
893  DEBUGLOG2(gmnfile,("TagName.len %d, '%s'"),(int)TagName.length(),TagName.c_str());
894 
895  if ( GspParse(FileName) ) {
896  UnRavel();
897  delete Root;
898  Root = 0;
899  }
900 
901  return Root;
902 }
char TagMode
Definition: GIS.cpp:109
GisTagBegin * LastOpenRange
Definition: GIS.cpp:108
GisToken * Para
Definition: GIS.cpp:112
void UnRavel()
Definition: GIS.cpp:803
std::string TagSep
Definition: GIS.cpp:111
std::string TagName
Definition: GIS.cpp:110
GisToken * LastOpenBracket
Definition: GIS.cpp:107
int GspParse(const std::string &FileName)
Definition: GSP.cpp:675
GisToken * LastPara
Definition: GIS.cpp:112
GisToken ** Current
Definition: GIS.cpp:107
#define DEBUGLOG2(level,...)
Definition: debug.h:241
GisToken * Root
Definition: GIS.cpp:106
std::string GISPrettyPrint ( std::string  s)

Definiert in Zeile 904 der Datei GIS.cpp.

905 {
906  std::string ret = "";
907  std::string pre = "";
908 
909  for (size_t start = 0, current = 0 ; current < s.length(); current++) {
910  char c = s[current];
911 
912  if (c == ('{')) {
913  pre += (" ");
914  } else if (c == ('}')) {
915  if (pre.length() >= 2) pre = pre.substr(0,pre.length()-2);
916  } else if (c == ('\n')) {
917  ret += s.substr (start, current - start + 1) + pre;
918  start = current + 1;
919  }
920  }
921 
922  return ret;
923 }
void GisReadArtDummy ( GisReadArtHead ,
char   
)

Definiert in Zeile 638 der Datei GIS_Head.cpp.

639 {
640  // just a dummy
641 }
mutabor::frac GisReadArtHeadOn ( GisReadArtHead **  Head,
frac  dTime,
GisReadArtProceed proceed 
)

Definiert in Zeile 644 der Datei GIS_Head.cpp.

Benutzt GisReadHead::Boss, GisReadHead::Cursor, GisReadHead::CursorNext(), GisReadHead::CutOut(), DEBUGLOG2, h, GisReadHead::Next, GisReadHead::nSub, GisReadArtHead::Read(), mutabor::str(), GisReadHead::Time, GisReadArtHead::Time2, TRACE und GisReadHead::Turn.

Wird benutzt von main().

645 {
646  TRACE;
647  frac MinTime = frac(-1, 1);
648 
649 beginloop:
650 
651  while ( *Head ) {
652  GisReadArtHead *h = *Head;
653 
654  if ( h->nSub > 0 ) // header has subs
655  {
656  Head = (GisReadArtHead**)&(h->Next);
657  continue;
658  }
659  if ( h->nSub == 0 ) // all subs has finished
660  {
661  proceed(h, h->Turn++); // end of segment or sequenz
662  h->CursorNext();
663  h->Time = 0;
664  }
665  if ( h->Time != frac(0, 1) ) // header in normal state
666  {
667  h->Time -= dTime;
668 
669  if ( h->Time <= frac(0, 1) )
670  {
671  proceed(h, h->Turn++);
672  DEBUGLOG2(gmnfile, ("Turn:2; Moving time2 to time (old: %s, new: %s)"),str(h->Time).c_str(), str(h->Time2).c_str());
673 
674  if ( h->Turn == 2 ) {
675  h->Time = h->Time2;
676  h->Time2 = 0;
677  }
678 
679  if ( h->Turn > 2 )
680  h->CursorNext();
681  }
682  }
683 
684  h->nSub = -1; // normal header
685  // now check, wether count down Time is 0
686  // if h->time = 0 then h->Cursor points to the GisToken next to proceed
687 
688  while ( !(h->Time) ) // read next tokens
689  {
690 
691  if ( h->Turn)
692  {
693  proceed(h, h->Turn++);
694 
695  if ( h->Turn == 2 ) {
696  DEBUGLOG2(gmnfile, ("Turn:2; Moving time2 to time (old: %s, new: %s)"),str(h->Time).c_str(), str(h->Time2).c_str());
697  h->Time = h->Time2;
698  h->Time2 = 0;
699  }
700 
701  if ( h->Turn > 2 )
702  h->CursorNext();
703  else
704  continue;
705  }
706 
707  if ( !h->Cursor ) // header finished, kick away
708  {
709  h->CutOut();
710 
711  if ( h->Boss ) h->Boss->nSub--; // inform the boss
712 
713  delete h;
714 
715  goto beginloop;
716  }
717  // proceed
718  proceed(h, 0);
719 
720  h->Read();
721 
722  if ( h->nSub != -1 ) goto beginloop;
723 
724  if ( !(h->Time) ) // token without duration
725  h->CursorNext();
726  }
727  // check MinTime
728  if ( MinTime == frac(-1,1) || h->Time < MinTime )
729  MinTime = h->Time;
730 
731  // next Header
732  Head = (GisReadArtHead**)&(h->Next);
733  }
734 
735  return MinTime;
736 }
GisToken * Cursor
Definition: GIS_Head.h:71
GisReadArtHead * h
Definition: mutgis.cpp:5
GisReadHead * Boss
Definition: GIS_Head.h:69
GisToken * CursorNext()
Definition: GIS_Head.h:105
std::string str(T obj)
Definition: Defs.h:110
GisReadHead * Next
Definition: GIS_Head.h:68
mutabor::frac Time2
Definition: GIS_Head.h:165
GisReadHead * CutOut()
Definition: GIS_Head.cpp:214
mutabor::frac Time
Definition: GIS_Head.h:72
char Turn
Definition: GIS_Head.h:74
int nSub
Definition: GIS_Head.h:70
#define TRACE
Definition: debug.h:245
#define DEBUGLOG2(level,...)
Definition: debug.h:241
mutabor::frac GisReadHeadOn ( GisReadHead **  Head,
frac  dTime,
GisReadProceed proceed 
)

Definiert in Zeile 364 der Datei GIS_Head.cpp.

Benutzt GisReadHead::Boss, GisReadHead::Cursor, GisReadHead::CursorNext(), GisReadHead::CutOut(), h, GisReadHead::Next, GisReadHead::nSub, GisReadHead::Read() und GisReadHead::Time.

365 {
366  frac MinTime = frac(-1, 1);
367 
368 beginloop:
369 
370  while ( *Head ) {
371  GisReadHead *h = *Head;
372 
373  if ( h->nSub > 0 ) // header has subs
374  {
375  Head = &(h->Next);
376  continue;
377  }
378  if ( h->nSub == 0 ) // all subs has finished
379  {
380  proceed(h, 1);
381  h->CursorNext();
382  h->Time = 0;
383  }
384  if ( h->Time != frac(0, 1) ) // header in normal state
385  {
386  h->Time -= dTime;
387 
388  if ( h->Time <= frac(0, 1) )
389  {
390  proceed(h, 1);
391  h->CursorNext();
392  }
393  }
394 
395  h->nSub = -1; // normal header
396  // now check, wether count down Time is 0
397  // if h->time = 0 then h->Cursor points to the GisToken next to proceed
398 
399  while ( !(h->Time) ) // read next tokens
400  {
401 
402  if ( !h->Cursor ) // header finished, kick away
403  {
404  h->CutOut();
405 
406  if ( h->Boss ) h->Boss->nSub--; // inform the boss
407 
408  delete h;
409 
410  goto beginloop;
411  }
412  // proceed
413  proceed(h, 0);
414 
415  h->Read();
416 
417  if ( h->nSub != -1 ) goto beginloop;
418 
419  if ( !(h->Time) ) // token without duration
420  h->CursorNext();
421  }
422  // check MinTime
423  if ( MinTime == frac(-1,1) || h->Time < MinTime )
424  MinTime = h->Time;
425 
426  // next Header
427  Head = &(h->Next);
428  }
429 
430  return MinTime;
431 }
GisToken * Cursor
Definition: GIS_Head.h:71
GisReadArtHead * h
Definition: mutgis.cpp:5
GisReadHead * Boss
Definition: GIS_Head.h:69
GisToken * CursorNext()
Definition: GIS_Head.h:105
GisReadHead * Next
Definition: GIS_Head.h:68
GisReadHead * CutOut()
Definition: GIS_Head.cpp:214
mutabor::frac Time
Definition: GIS_Head.h:72
void Read()
Definition: GIS_Head.cpp:315
int nSub
Definition: GIS_Head.h:70
int GisWriteHeadGis ( GisWriteHead **  head,
std::string  id,
GisToken token,
char  turn 
)

Definiert in Zeile 1490 der Datei GIS_Head.cpp.

Benutzt GetMatchingHeader() und GisWriteHead::ProceedGis().

Wird benutzt von mutabor::OutputGis::do_Gis().

1491 {
1492  return GetMatchingHeader(head, id)->ProceedGis(token, turn);
1493 }
GisWriteHead * GetMatchingHeader(GisWriteHead **head, const std::string id)
Definition: GIS_Head.cpp:1435
int ProceedGis(GisToken *token, char turn=0)
Definition: GIS_Head.cpp:1245
int GspParse ( const std::string &  FileName)

Definiert in Zeile 675 der Datei GSP.cpp.

Benutzt BracketDeep, Brackets, CHAR0, CheckError(), CloseFile(), CurrentLine, CurrentPos, DoError(), DoParse(), duration, Eof, GetSep(), GspCurrentLineNr, GspError, GspErrorLine, GspErrorLineNr, GspErrorPos, LastTag, octave, OpenFile() und StartSep().

Wird benutzt von GisParse().

676 {
677  GspCurrentLineNr = 0;
678  CurrentPos = 0;
679  CurrentLine = "";
680 
681  GspErrorLineNr = 0;
682  GspErrorPos = 0;
683  GspErrorLine = "";
684  GspError = 0;
685 
686  Eof = 0;
687 #ifdef WX
688  Brackets = "";
689 #else
690  BracketDeep = 0;
691 #endif
692  LastTag = 0;
693 
694  octave = 1;
695  duration = frac(1,4);
696 
697  if ( OpenFile(FileName) )
698  return DoError(30); // couldn't open file
699 
700  GetSep();
701 
702  if ( CheckError(StartSep()) )
703  return GspError;
704 
705 #ifdef GMN_STRICT
706  if ( !Eof && CHAR0 != '[' && CHAR0 != '{' )
707  DoError(40);
708 
709 #endif
710  if ( !GspError) DoParse();
711 
712  if ( CloseFile() )
713  return DoError(31); // couldn't close file
714 
715  return GspError;
716 }
int Eof
Definition: GSP_File.cpp:38
int GspErrorPos
Definition: GSP.cpp:30
#define CHAR0
Definition: GSP.cpp:179
int GspError
Definition: GSP.cpp:32
std::string GspErrorLine
Definition: GSP.cpp:31
int OpenFile(const std::string &Name)
Definition: GSP_File.cpp:53
int StartSep()
Definition: GIS.cpp:547
int CloseFile()
Definition: GSP_File.cpp:75
int DoParse()
Definition: GSP.cpp:526
static int octave
Definition: GSP.cpp:66
int CheckError(int nr)
Definition: GSP.cpp:157
std::string Brackets
Definition: GSP.cpp:56
std::string CurrentLine
Definition: GSP_File.cpp:36
size_t CurrentPos
Definition: GSP_File.cpp:37
#define BracketDeep
Definition: GSP.cpp:57
int DoError(int nr, int pos=-1)
Definition: GSP.cpp:142
static frac duration
Definition: GSP.cpp:70
int GspCurrentLineNr
Definition: GSP.cpp:28
int GspErrorLineNr
Definition: GSP.cpp:29
char LastTag
Definition: GSP.cpp:63
int GetSep()
Definition: GSP.cpp:192
template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::handle_event ( event  e)
inline

Definiert in Zeile 240 der Datei Route-inlines.h.

240  {
241  if (Out) {
242  e->set_box(box);
243  Out->handle_event(e);
244  }
245  }
OutputDevice Out
Definition: Route.h:463
void mutabor::OutputDeviceClass::handle_event ( event  e)
inline

Definiert in Zeile 904 der Datei Device.h.

Benutzt mutabor::OutputDeviceClass::do_handle_event() und mutabor::OutputDeviceClass::write_lock.

Wird benutzt von mutabor::OutputDeviceClass::all_handle_event().

904  {
905  ScopedLock lock(write_lock);
906  do_handle_event(e);
907  }
wxMutexLocker ScopedLock
Definition: thread.h:57
virtual void do_handle_event(event e)=0
void mutabor::InClose ( )

Definiert in Zeile 732 der Datei Device.cpp.

Benutzt mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList() und TRACE.

Wird benutzt von mutabor::InputDeviceClass::BatchPlay(), main() und mutabor::BoxClass::StopAll().

733  {
734  TRACE;
735  const InputDeviceList& list = InputDeviceClass::GetDeviceList();
736  for (InputDeviceList::const_iterator In = list.begin();
737  In != list.end(); In++)
738  (*In)->Close();
739  TRACE;
740  }
CommonTypedDeviceAPI< InputDeviceClass >::listtype InputDeviceList
Definition: Device.h:1011
#define TRACE
Definition: debug.h:245
void mutabor::InitDeviceFactories ( )

Definiert in Zeile 665 der Datei Device.cpp.

Wird benutzt von main().

665  {
666  new BoxFactory;
667  new RouteFactory;
668  new MidiPortFactory;
669  new MidiFileFactory;
670  new GisFactory;
671  }
void mutabor::initialize_box_data ( )

Definiert in Zeile 1057 der Datei Box.cpp.

Benutzt mutabor::BoxClass::backend_callbacks und mutabor::hidden::mutabor_set_callbacks().

Wird benutzt von IMPLEMENT_APP(), InputMidiFileTest::testAfterTouch(), InputMidiFileTest::testBoxMidiIn() und InputMidiFileTest::testSysEx().

1058  {
1059  mutabor_set_callbacks(& BoxClass::backend_callbacks);
1060  }
mutabor_callback_type * mutabor_set_callbacks(mutabor_callback_type *callbacks)
Set the callbacks for the mutabor backend.
Definition: Execute.cpp:116
template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::InitializeIds ( )
static

Initialize the internal device identifiers.

This function sets the internal device ids of all input devices, starting from 0 and incrementing by 1

Definiert in Zeile 214 der Datei Route.cpp.

Benutzt mutabor::BoxClass::InitializeIds(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::InitializeIds() und mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::InitializeIds().

215  {
217  int i = 0;
218  for (typename routeListType::iterator r = routeList.begin();
219  r != routeList.end(); r++) {
220  (*r) -> routefile_id = i++;
221  }
224  }
static void InitializeIds()
Initialize the internal device identifiers.
Definition: Box.cpp:190
static void InitializeIds()
Initialize the internal device identifiers.
static routeListType routeList
Definition: Route.h:472
void mutabor::BoxClass::InitializeIds ( )
static

Initialize the internal device identifiers.

This function sets the internal device ids of all output devices, starting from 0 and incrementing by 1

Definiert in Zeile 190 der Datei Box.cpp.

Benutzt TRACET.

Wird benutzt von mutabor::TRouteClass< I, O, B >::InitializeIds().

191  {
192  TRACET(BoxClass);
193  size_t nr = 0;
194  for (typename listtype::iterator i = boxList.begin();
195  i != boxList.end();
196  i++) {
197  /* currently, the user provides the numeric ids, so we don't need to change them */
198  //(*i)->set_routefile_id(nr);
199  nr = (*i)->get_routefile_id();
200  routeListType & list = (*i)->routes;
201  for (routeListType::iterator j = list.begin();
202  j != list.end();
203  j++) {
204  //thistype * ptr = NULL;
205  (*j)->SetBoxId(nr);
206  }
207  // nr++;
208  }
209  return;
210 #if 0
211  for (typename listtype::iterator i = deviceList.begin();
212  i != deviceList.end();
213  i++) {
214  (*i)->set_routexfile_id(nr);
215  routeListType & list = (*i)->routes;
216  for (routeListType::iterator j = list.begin();
217  j != list.end();
218  j++) {
219  thistype * ptr = NULL;
220  (*j)->SetDeviceId(nr, ptr);
221  }
222  nr++;
223  }
224  TRACET(thistype);
225 #endif
226  }
static listtype boxList
Definition: Box.h:805
void SetBoxId(int Id)
Definition: Route.h:303
void SetDeviceId(int Id, I)
Definition: Route.h:296
#define TRACET(type)
Definition: debug.h:247
TRouteClass< InputDevice, OutputDevice, Box >::routeListType routeListType
Definition: Route.h:547
BoxClass(int id=-1)
Definition: Box.cpp:810
template<class T , class P , class L >
void mutabor::CommonTypedDeviceAPI< T, P, L >::InitializeIds ( )
static

Initialize the internal device identifiers.

This function sets the internal device ids of all output devices, starting from 0 and incrementing by 1

Definiert in Zeile 204 der Datei Device.cpp.

Benutzt TRACET.

205  {
206  TRACET(thistype);
207  size_t nr = 0;
208  for (typename listtype::iterator i = deviceList.begin();
209  i != deviceList.end();
210  i++) {
211  (*i)->set_routefile_id(nr);
212  routeListType & list = (*i)->routes;
213  for (routeListType::iterator j = list.begin();
214  j != list.end();
215  j++) {
216  thistype * ptr = NULL;
217  (*j)->SetDeviceId(nr, ptr);
218  }
219  nr++;
220  }
221  TRACET(thistype);
222  }
static listtype deviceList
Definition: Device.h:694
#define TRACET(type)
Definition: debug.h:247
TRouteClass< InputDevice, OutputDevice, Box >::routeListType routeListType
Definition: Route.h:547
bool mutabor::InOpen ( )

Definiert in Zeile 712 der Datei Device.cpp.

Benutzt DEBUGLOGBASE, mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList() und TRACE.

Wird benutzt von main() und mutabor::OpenAll().

713  {
714  TRACE;
715  const InputDeviceList& list = InputDeviceClass::GetDeviceList();
716  for (InputDeviceList::const_iterator In = list.begin();
717  In != list.end(); In++)
718  if ( !(*In)->Open() ) {
719  for (InputDeviceList::const_iterator In1 = list.begin();
720  In1 != In; In1++)
721  (*In1)->Close();
722 
723  DEBUGLOGBASE(other,"",("Opening failed"));
724 
725  return false;
726  }
727 
728  TRACE;
729  return true;
730  }
CommonTypedDeviceAPI< InputDeviceClass >::listtype InputDeviceList
Definition: Device.h:1011
#define TRACE
Definition: debug.h:245
#define DEBUGLOGBASE(level, type,...)
Definition: debug.h:239
mutabor::InputDeviceClass::InputDeviceClass ( const std::string &  name = "",
mutabor::MutaborModeType  m = DeviceStop,
int  id = -1 
)
inlineprotected

Definiert in Zeile 1318 der Datei Device.h.

Benutzt mutabor::Device::Mode.

1320  :
1321  CommonTypedDeviceAPI<InputDeviceClass>(name, id)
1322  {
1323  Mode = m;
1324  }
enum MutaborModeType Mode
Definition: Device.h:652
GisWriteHead * GisWriteHead::InsertAfter ( GisWriteHead position)

Definiert in Zeile 990 der Datei GIS_Head.cpp.

Benutzt GisWriteHead::Next und GisWriteHead::Prev.

Wird benutzt von GetMatchingHeader().

991 {
992  if ( !position ) {
993  Next = 0;
994  Prev = 0;
995  return this;
996  }
997 
998  if ( position->Next ) // not last position
999  position->Next->Prev = this;
1000 
1001  Next = position->Next;
1002 
1003  Prev = position;
1004 
1005  position->Next = this;
1006 
1007  return this;
1008 }
GisWriteHead * Next
Definition: GIS_Head.h:316
GisWriteHead * Prev
Definition: GIS_Head.h:316
GisReadHead * GisReadHead::InsertInfrontOf ( GisReadHead position)

Definiert in Zeile 145 der Datei GIS_Head.cpp.

Benutzt DEBUGLOG, mutASSERT, GisReadHead::Next, GisReadHead::Prev und GisReadHead::PrevPtr.

Wird benutzt von GisReadHead::GisReadHead().

146 {
147  DEBUGLOG (gmnfile, "pos = %p; this = %p" ,(void*)position,(void*)this);
148 
149  if ( !position ) {
150  Next = NULL;
151  Prev = this;
152  return this;
153  }
154 
155 #if 0
156  // *(position->Prev) == position
157  if ( *(position->PrevPtr) == position ) { // first position
158  DEBUGLOG (gmnfile, "first position %p, Prev: %p, Next: %p, cmp: %p" ,
159  position,
160  position->Prev,
161  position->Next,
162  *((position->PrevPtr))
163  );
164  *(position->PrevPtr) = this;
165  } else { // normal position in list
166  DEBUGLOG (gmnfile, "first position %p, Prev: %p, Next: %p, cmp: %p" ,
167  position,
168  position->Prev,
169  position->Next,
170  *((GisReadHead**)(position->PrevPtr))
171  );
172  (*(position->PrevPtr))->Next = this;
173  }
174 
175  PrevPtr = position->PrevPtr;
176 
177  Next = position;
178  *(position->PrevPtr) = this;
179  return this;
180 #else
181  // *(position->Prev) == position
182 
183  if ( *(position->PrevPtr) == position ) { // first position
184  DEBUGLOG (gmnfile, "first position %p, Prev: %p, Next: %p, cmp: %p" ,
185  (void*)position,
186  (void*)position->Prev,
187  (void*)position->Next,
188  (void*)*((position->PrevPtr))
189  );
190  *(position->PrevPtr) = this;
191  PrevPtr = position->PrevPtr;
192  position->PrevPtr = &(position->Prev);
193  } else { // normal position in list
194  DEBUGLOG (gmnfile, "first position %p, Prev: %p, Next: %p, cmp: %p" ,
195  (void*)position,
196  (void*)position->Prev,
197  (void*)position->Next,
198  (void*)*((GisReadHead**)(position->PrevPtr))
199  );
200 
201  position->Prev->Next = this;
202  mutASSERT(position->PrevPtr == &(position->Prev));
203  }
204 
205  Prev = position->Prev;
206 
207  Next = position;
208  position->Prev = this;
209 
210  return this;
211 #endif
212 }
GisReadHead ** PrevPtr
Definition: GIS_Head.h:68
#define DEBUGLOG(level,...)
Definition: debug.h:240
GisReadHead * Next
Definition: GIS_Head.h:68
#define mutASSERT(expr)
GisReadHead * Prev
Definition: GIS_Head.h:68
void mutabor::BoxClass::interrupt_logic ( bool  allow_resume = true)
inline

Break the execution of any running logic loops.

Parameter
allow_resumeif true allow the next call to the logic to resume logic execution

Definiert in Zeile 620 der Datei Box.h.

Benutzt mutabor::hidden::mutabor_box_flags::auto_reset_break_logic, mutabor::BoxClass::box, mutabor::hidden::mutabor_box_flags::break_logic und mutabor::hidden::mutabor_box_type::flags.

Wird benutzt von mutabor::BoxClass::dog_watching().

620  {
621  if (box) {
622  box->flags.break_logic = 1;
623  box->flags.auto_reset_break_logic = allow_resume;
624  }
625  }
unsigned int auto_reset_break_logic
Automatically reset logic breaking.
Definition: box.h:98
unsigned int break_logic
If set to 1 Break the execution of the logic.
Definition: box.h:94
struct mutabor_box_type * box
Definition: Box.h:810
volatile struct mutabor_box_flags flags
Definition: box.h:157
bool mutabor::BoxClass::tone::is_active ( )
inline
bool mutabor::ChannelData::is_changed_controller ( controller_vector::const_iterator  actual) const
inline

Definiert in Zeile 433 der Datei Device.h.

Benutzt mutabor::ChannelData::controller, mutabor::ChannelData::controller_changed und mutASSERT.

Wird benutzt von mutabor::CommonMidiOutput< T, D >::CopyProgramChange() und mutabor::CommonMidiOutput< T, D >::do_UpdateControllers().

433  {
434  mutASSERT(controller_changed.begin() <= actual);
435  mutASSERT(actual<= controller_changed.end());
436  if (actual == controller_changed.end()) return false;
437  if (*actual == -1) return false;
438  mutASSERT(0<= *actual);
439  mutASSERT((size_t)(*actual) < controller.size());
440  return true;
441  }
controller_vector controller
Definition: Device.h:491
#define mutASSERT(expr)
controller_vector controller_changed
Definition: Device.h:492
bool mutabor::ChannelData::is_compatible ( const ChannelData cd) const
inline

Definiert in Zeile 468 der Datei Device.h.

Benutzt mutabor::ChannelData::controller und mutabor::ChannelData::Sound.

468  {
469  /* \todo check that ignoring pitch bend is ok */
470  if (Sound != -1 && cd.Sound != -1
471  && Sound != cd.Sound) return false;
472  if (controller.size()
473  != cd.controller.size()) return false;
474 
475  /* \todo optimization */
476  for (size_t i = 0 ; i < std::min(controller.size(),cd.controller.size()) ; i++) {
477  if (controller[i] != -1
478  && cd.controller[i] != -1
479  && controller[i] != cd.controller[i]) return false;
480  }
481  return true;
482  }
controller_vector controller
Definition: Device.h:491
bool mutabor::BoxClass::tone::is_empty ( )
inline

Definiert in Zeile 161 der Datei Box.h.

Benutzt mutabor::hidden::MUT_INTERVAL::active und mutabor::hidden::mutabor_empty_tone.

161  {
163  }
enum mutabor_interval_type_constants active
Definition: Interpre.h:81
bool mutabor::BoxClass::tone::is_ok ( )
inline

Definiert in Zeile 153 der Datei Box.h.

Benutzt mutabor::hidden::MUT_INTERVAL::active und mutabor::hidden::mutabor_invalid_tone.

153  {
155  }
enum mutabor_interval_type_constants active
Definition: Interpre.h:81
bool mutabor::InputDeviceClass::IsDelta ( mutint64  d)
inline

Definiert in Zeile 1244 der Datei Device.h.

Benutzt mutabor::InputDeviceClass::GetNO_DELTA().

Wird benutzt von mutabor::InputGis::ReadOn() und mutabor::CommonFileInputDevice::ThreadPlay().

1244  {
1245  return d != GetNO_DELTA();
1246  }
static mutint64 GetNO_DELTA()
Definition: Device.h:1240
bool mutabor::Device::IsDirty ( ) const
inline

Definiert in Zeile 631 der Datei Device.h.

Benutzt mutabor::Device::dirty.

631 { return dirty; }
static bool mutabor::BoxClass::IsInBoxList ( const Box  b)
inlinestaticprotected

Definiert in Zeile 863 der Datei Box.h.

Benutzt mutabor::BoxClass::boxList und mutabor::BoxClass::FindInBoxList().

863  {
864  return FindInBoxList(b) != boxList.end();
865  }
static listtype boxList
Definition: Box.h:805
static listtype::iterator FindInBoxList(Box b)
Definition: Box.h:856
template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
static bool mutabor::CommonTypedDeviceAPI< T, P, L >::IsInDeviceList ( const DevicePtr  dev)
inlinestaticprotected

Definiert in Zeile 823 der Datei Device.h.

823  {
824  return FindInDeviceList(dev) != deviceList.end();
825  }
static listtype::iterator FindInDeviceList(DevicePtr dev)
Definition: Device.h:816
static listtype deviceList
Definition: Device.h:694
int IsLetter ( char  c)
inline

Definiert in Zeile 96 der Datei GSP.cpp.

Wird benutzt von DoParse(), ReadNote() und ReadTag().

97 {
98  return (('a' <= c) && (c <= 'z')) ||
99  (('A' <= c) && (c <= 'Z')) ||
100  ( c == ('_') );
101 }
bool mutabor::BoxClass::IsLogicKey ( int  key)

Definiert in Zeile 782 der Datei Box.cpp.

Benutzt mutabor::hidden::mutabor_box_type::current_logic, mutabor::hidden::mutabor_box_type::file, mutabor::hidden::mutabor_logic_parsed::global_keystrokes, mutabor::is_logic_key() und mutabor::hidden::logik::keystroke_list.

782  {
784  return true;
786  }
static bool is_logic_key(struct keyboard_ereignis *e, int key)
Definition: Box.cpp:773
struct mutabor_box_type * box
Definition: Box.h:810
struct logik * current_logic
Definition: box.h:148
struct keyboard_ereignis * global_keystrokes
Definition: Parser.h:144
struct mutabor_logic_parsed * file
Definition: box.h:155
struct keyboard_ereignis * keystroke_list
Definition: Global.h:454
bool mutabor::BoxClass::IsNormal ( )
inline

Definiert in Zeile 278 der Datei Box.h.

Benutzt mutabor::Box0 und mutabor::BoxClass::routefile_id.

278  {
279  return routefile_id >= Box0;
280  }
int routefile_id
Definition: Box.h:812
bool mutabor::BoxClass::IsOpen ( )
inline

Definiert in Zeile 432 der Datei Box.h.

Benutzt mutabor::BoxClass::open.

Wird benutzt von mutabor::BoxClass::Destroy().

432 { return open; }
bool mutabor::Device::IsOpen ( ) const
inline
void mutabor::BoxClass::issue_error ( error_type  type,
const char *  format,
  ... 
)
inline

Format and process a runtime error message or warning.

Parameter
typeerror type.
formatFormat string

Definiert in Zeile 720 der Datei Box.h.

Benutzt _mut und mutabor::BoxClass::runtime_error().

Wird benutzt von mutabor::BoxClass::dog_watching().

720  {
721  char * formatted;
722  va_list args;
723  va_start(args,format);
724  if (vasprintf(&formatted,format,args) == -1) {
725  formatted = (char *)_mut("Error in Error: Could not allocate buffer for error message.");
726  if (!formatted)
727  formatted =
728  (char *) "Error in Error: Could not allocate buffer for error message.";
729  }
730  va_end(args);
731  runtime_error(type,formatted);
732  free(formatted);
733  }
#define _mut
Definition: Defs.h:117
virtual void runtime_error(error_type type, const char *message)
Process an error message (doing the real work)
Definition: Box.cpp:806
void mutabor::BoxClass::KeyboardAnalysis ( int  key,
KeyboardFlags  flags 
)
inline

Execute the action associated with a key that is pressed on the computer keyboard.

Parameter
keyKey that has been pressed.
flagsFlags which type of action should be taken.

Definiert in Zeile 584 der Datei Box.h.

Benutzt mutabor::BoxClass::box, mutabor::hidden::KeyboardAnalyse(), mutabor::hidden::KeyboardAnalyseSimple(), mutabor::BoxClass::KeyboardAny, mutabor::BoxClass::KeyboardLogic und mutabor::BoxClass::KeyboardNoLogic.

584  {
585  scoped_watchdog lock(this);
586  switch (flags) {
587  case KeyboardNoLogic:
588  case KeyboardLogic:
590  break;
591  case KeyboardAny:
593  break;
594  }
595  }
void KeyboardAnalyse(mutabor_box_type *box, int taste, char isLogic)
Definition: Execute.cpp:1160
void KeyboardAnalyseSimple(mutabor_box_type *box, int taste)
Definition: Execute.cpp:1165
struct mutabor_box_type * box
Definition: Box.h:810
void mutabor::BoxClass::KeyboardAnalysis ( const std::string  keys)
inline

Execute the actions that are associated with the characters of a string.

Zu beachten
: The character “&” denotes that the following character will not be a logic.
Parameter
keys

Definiert in Zeile 605 der Datei Box.h.

Benutzt mutabor::BoxClass::box und mutabor::hidden::KeyboardIn().

605  {
606  scoped_watchdog lock(this);
607  hidden::KeyboardIn(box,keys.c_str());
608  }
struct mutabor_box_type * box
Definition: Box.h:810
void KeyboardIn(mutabor_box_type *box, const char *keys)
Definition: Execute.cpp:990
template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::Load ( tree_storage config)
virtual

Read the route into from a tree based configuration.

config (tree_storage &) configuration where the route settings will be read from

Definiert in Zeile 88 der Datei Route.cpp.

Benutzt mutabor::connect(), mutabor::BoxClass::GetOrCreateBox(), mutabor::tree_storage::GetPath(), mutASSERT, mutabor::NoBox und mutabor::tree_storage::Read().

89  {
90 #ifdef DEBUG
91  std::string oldpath = config.GetPath();
92 #endif
93  connect(this,BoxClass::GetOrCreateBox(config.Read("Box",NoBox)));
94  Active = config.Read("Active",true);
95  if (In)
96  In->Load(config,this);
97  if (Out)
98  Out->Load(config,this);
99  mutASSERT(oldpath == config.GetPath());
100  }
InputDevice In
Definition: Route.h:464
static Box GetOrCreateBox(int id)
Return the box that is associated with the corrent id.
Definition: Box.h:983
#define mutASSERT(expr)
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
OutputDevice Out
Definition: Route.h:463
void mutabor::BoxClass::Load ( tree_storage config)
virtual

Load current device settings from a tree storage.

config (tree_storage) storage class, where the data will be loaded from.

Erneute Implementation in mutaborGUI::BoxData.

Definiert in Zeile 117 der Datei Box.cpp.

Wird benutzt von mutaborGUI::BoxData::Load().

117  {
118  }
void mutabor::BoxClass::Load ( tree_storage config,
RouteClass route 
)
virtual

Load route settings (filter settings) for a given route.

Some route settings (e.g. filter settings) are device type specific. This function loads them from a tree storage. config (tree_storage *) Storage class, where the data will be restored from. route (Route) Route whos data shall be loaded.

Definiert in Zeile 120 der Datei Box.cpp.

121  {
122  }
virtual void mutabor::Device::Load ( tree_storage config)
pure virtual

Load current device settings from a tree storage.

config (tree_storage) storage class, where the data will be loaded from.

Implementiert in mutabor::OutputMidiFile, mutabor::InputMidiPort, mutabor::OutputMidiPort, mutabor::CommonFileInputDevice, midicmnInputDevice, mutabor::OutputGis, mutabor::CommonFileOutputDevice und midicmnOutputDevice.

virtual void mutabor::Device::Load ( tree_storage config,
RouteClass route 
)
pure virtual

Load route settings (filter settings) for a given route.

Some route settings (e.g. filter settings) are device type specific. This function loads them from a tree storage. config (tree_storage *) Storage class, where the data will be restored from. route (Route) Route whos data shall be loaded.

Implementiert in mutabor::InputMidiFile, mutabor::OutputMidiFile, mutabor::InputMidiPort, mutabor::OutputMidiPort, mutabor::InputGis, midicmnInputDevice, testCommonFileDeviceTimer, testCommonFileDeviceTimer, mutabor::OutputGis und midicmnOutputDevice.

void mutabor::BoxFactory::LoadBoxes ( tree_storage config)
static

load the routes from a tree based configuration

Parameter
configconifiguration to be read from

Definiert in Zeile 965 der Datei Box.cpp.

Benutzt mutabor::BoxFactory::Create(), DEBUGLOGTYPE, mutabor::tree_storage::GetPath(), mutASSERT, mutabor::NoBox, mutabor::tree_storage::Read(), mutabor::tree_storage::toFirstLeaf(), mutabor::tree_storage::toLeaf(), mutabor::tree_storage::toNextLeaf() und mutabor::tree_storage::toParent().

Wird benutzt von mutabor::RouteFactory::DoLoadRoutes().

966  {
967 #ifdef DEBUG
968  std::string oldpath = config.GetPath();
969 #endif
970  config.toLeaf(("Boxes"));
971 
972  int i = config.toFirstLeaf(("Box"));
973  while (i != wxNOT_FOUND) {
974  DEBUGLOGTYPE(config,BoxClass,("Loading box device with id %d"),i);
975  int type = config.Read(("Type"), NoBox);
976  Box b = BoxFactory::Create(type);
977  if (!b) continue;
978  b -> set_routefile_id(i);
979  b -> Load(config);
980  i = config.toNextLeaf(("Box"));
981  }
982 
983  config.toParent(2);
984  mutASSERT(oldpath == config.GetPath());
985  }
#define DEBUGLOGTYPE(level, type,...)
Definition: debug.h:242
#define mutASSERT(expr)
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:121
static Box Create(int type, int id=NewBox)
Definition: Box.h:899
void mutabor::DeviceFactory::LoadInputDevices ( tree_storage config)
static

load the routes from a tree based configuration

Parameter
configconifiguration to be read from

Definiert in Zeile 587 der Datei Device.cpp.

Benutzt mutabor::DeviceFactory::CreateInput(), DEBUGLOGTYPE, mutabor::DTMidiPort, mutabor::tree_storage::GetPath(), mutASSERT, mutabor::tree_storage::Read(), mutabor::Device::set_routefile_id(), mutabor::tree_storage::toFirstLeaf(), mutabor::tree_storage::toLeaf(), mutabor::tree_storage::toNextLeaf(), mutabor::tree_storage::toParent() und TRACE.

Wird benutzt von mutabor::RouteFactory::DoLoadRoutes().

588  {
589 #ifdef DEBUG
590  std::string oldpath = config.GetPath();
591 #endif
592  config.toLeaf("InputDevices");
593 
594  int i = config.toFirstLeaf("Device");
595  while (i != wxNOT_FOUND) {
596  DevType type = (DevType) config.Read("Type", DTMidiPort);
597  TRACE;
598  InputDevice in = CreateInput(type);
599  TRACE;
600  in -> Device::set_routefile_id(i);
601 #ifdef DEBUG
602  std::string name = config.Read("Type Name",
603  "Midi input device");
604  DEBUGLOGTYPE(config,
605  InputDeviceClass,
606  ("device type name '%s' == '%s'?"),
607  name,
608  (in->GetTypeName()));
609  mutASSERT(name == in -> GetTypeName());
610 #endif
611  in -> Load(config);
612  TRACE;
613  i = config.toNextLeaf("Device");
614  }
615 
616  config.toParent(2);
617  mutASSERT(oldpath == config.GetPath());
618  }
DevType
Definition: Device.h:91
#define DEBUGLOGTYPE(level, type,...)
Definition: debug.h:242
void set_routefile_id(int id)
Definition: Device.h:671
#define mutASSERT(expr)
#define TRACE
Definition: debug.h:245
CommonTypedDeviceAPI< InputDeviceClass >::DevicePtr InputDevice
Definition: Device.h:1009
static InputDevice CreateInput(int type, const std::string &name="", MutaborModeType mode=DeviceStop, int id=-1)
Definition: Device.h:1381
void mutabor::DeviceFactory::LoadOutputDevices ( tree_storage config)
static

load the routes from a tree based configuration

Parameter
configconifiguration to be read from

Definiert in Zeile 534 der Datei Device.cpp.

Benutzt mutabor::DeviceFactory::CreateOutput(), DEBUGLOGTYPE, mutabor::DTMidiPort, mutabor::tree_storage::GetPath(), mutASSERT, mutabor::tree_storage::Read(), mutabor::tree_storage::toFirstLeaf(), mutabor::tree_storage::toLeaf(), mutabor::tree_storage::toNextLeaf() und mutabor::tree_storage::toParent().

Wird benutzt von mutabor::RouteFactory::DoLoadRoutes().

535  {
536 #ifdef DEBUG
537  std::string oldpath = config.GetPath();
538 #endif
539  config.toLeaf("OutputDevices");
540 
541  int i = config.toFirstLeaf("Device");
542  while (i != wxNOT_FOUND) {
543  DEBUGLOGTYPE(config,OutputDeviceClass,"Loading output device with id %d",i);
544  DevType type = (DevType) config.Read("Type", DTMidiPort);
546  if (!out) continue;
547  out -> set_routefile_id(i);
548  std::string name = config.Read("Type Name",
549  "Midi output device");
550  DEBUGLOGTYPE(config,
551  OutputDeviceClass,
552  "device type name '%s' == '%s'?",
553  name,
554  (out->GetTypeName()));
555  mutASSERT(name == out->GetTypeName());
556  out -> Load(config);
557  i = config.toNextLeaf("Device");
558  }
559 
560  config.toParent(2);
561  mutASSERT(oldpath == config.GetPath());
562  }
DevType
Definition: Device.h:91
#define DEBUGLOGTYPE(level, type,...)
Definition: debug.h:242
static OutputDevice CreateOutput(int type, const std::string &name="", MutaborModeType mode=DeviceStop, int id=-1)
Definition: Device.h:1364
#define mutASSERT(expr)
CommonTypedDeviceAPI< OutputDeviceClass >::DevicePtr OutputDevice
Definition: Device.h:836
void compat30::LoadRoutes ( const std::string &  )

load the routes from a text string

Parameter
configstring to be read from
Rückgabe
the error message in case of an error.

Definiert in Zeile 126 der Datei RouteCompat.cpp.

Benutzt mutabor::BoxClass::ClearBoxList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::ClearDeviceList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::ClearDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::ClearRouteList(), mutabor::RouteFactory::Create(), mutabor::DeviceFactory::CreateInput(), mutabor::DeviceFactory::CreateOutput(), DEBUGLOG2, mutabor::DTGis, mutabor::DTMidiFile, mutabor::DTMidiPort, mutabor::DTNotSet, mutabor::DTUnknown, mutabor::hidden::error, GETLINE, mutabor::BoxClass::GetOrCreateBox(), compat30::GetOut(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::InitializeIds(), SSCANF, compat30::Str2DT(), compat30::Str2RT(), STUB, TRACE und UNREACHABLE.

Wird benutzt von mutaborGUI::MutRouteWnd::CmRouteLoad().

127  {
128  bool error = false;
129 
130  TRACE;
131 
132  // empty lists
133  TRACE;
134  InputDeviceClass::ClearDeviceList();
135  TRACE;
136  OutputDeviceClass::ClearDeviceList();
137  TRACE;
138  RouteClass::ClearRouteList();
139  TRACE;
140  BoxClass::ClearBoxList();
141  TRACE;
142 
143  // Zerlegen von config
144  std::string s;
145  size_t i = 0;
146  GETLINE;
147 
148  DEBUGLOG2(routing,("+%s"),s.c_str());
149 
150  while ( s.substr(0,6) != "OUTPUT") {
151  GETLINE;
152  DEBUGLOG2(other,("+%s"),s.c_str());
153  }
154 
155  GETLINE;
156  DEBUGLOG2(routing,("+%s"),s.c_str());
157  // Output lesen
158  while ( s.substr(0,5) != "INPUT") {
159  char Type[s.length()], Name[s.length()];
160  int DevId, BendingRange;
161 
162  DEBUGLOG2(routing,("a%s"),s.c_str());
163 
164  int test = std::sscanf(s.c_str(), ("%s \"%[^\"]\" %d %d"),
165  Type, Name, &DevId, &BendingRange);
166  if ( test < 2 )
167  test = std::sscanf(s.c_str(), ("%s %s %d %d"),
168  Type, Name, &DevId, &BendingRange);
169 
170  if ( test < 3 ) {
171  error = true;
172  }
173 #if 0
174  int test = SSCANF(s.c_str(), ("%s \"%[^\"]\" %d %d"),
175  Type, Name, &DevId, &BendingRange);
176  if ( test < 2 )
177  test = SSCANF(s.c_str(), ("%s %s %d %d"),
178  Type, Name, &DevId, &BendingRange);
179  if ( test < 3 ) {
180  error = true;
181  }
182 #endif
183  DEBUGLOG2(routing,("%d parameters read: Type = '%s', Name = '%s', devid = %d, bendingrange = %d"),
184  test,(const char *)Type,(const char * )Name,DevId,BendingRange);
185  DEBUGLOG2(routing,("Name = '%s'"),(std::string(Name).c_str()));
186  OutputDevice Out =
187  DeviceFactory::CreateOutput(Str2DT(Type),
188  Name);
189 
190  switch (Str2DT(Type)) {
191  case DTMidiPort:
192  if (test < 4)
193  error = true;
194  else {
195  OutputMidiPort * dev =
196  dynamic_cast<OutputMidiPort *>(Out.get());
197  if (!dev)
198  UNREACHABLE;
199  else {
200  dev -> SetDevId(DevId);
201  dev -> SetBendingRange (BendingRange);
202  }
203  }
204  break;
205  case DTMidiFile:
206  if (test < 4)
207  error = true;
208  else {
209  OutputMidiFile * dev =
210  dynamic_cast<OutputMidiFile *>(Out.get());
211  if (!dev)
212  UNREACHABLE;
213  else
214  dev -> SetBendingRange (BendingRange);
215  }
216  break;
217  case DTUnknown:
218  case DTGis:
219  default:
220  if (test >= 4) error = true;
221  }
222 
223  GETLINE;
224  DEBUGLOG2(other,("+%s"),s.c_str());
225  }
226 
227  OutputDeviceClass::InitializeIds();
228 
229  GETLINE;
230  DEBUGLOG2(routing,("+%s"),s.c_str());
231  // Input lesen
232 
233  while ( 1 ) {
234  // Device lesen
235  char Type[s.length()], Name[s.length()];
236  //std::string Type, Name;
237  int DevId = -1;
238  int test = std::sscanf(s.c_str(), ("%s \"%[^\"]\" %d"),
239  Type, Name, &DevId);
240  if ( test < 2 )
241  test = std::sscanf(s.c_str(), ("%s %s %d"),
242  Type, Name, &DevId);
243  if ( test < 3 ) {
244  error = 1;
245  }
246 
247 #if 0
248  int test = SSCANF(s, ("%s \"%[^\"]\" %d"),
249  Type, Name, &DevId);
250  if ( test < 2 )
251  test = SSCANF(s, ("%s %s %d"),
252  Type, Name, &DevId);
253 
254  if ( test < 3 ) {
255  error = 1;
256  }
257 
258 #endif
259  DEBUGLOG2(routing,("%d input parameters read: Type = '%s', Name = '%s', DevId = %d"),
260  test, (const char *)Type, (const char *)Name, DevId);
261  InputDevice In =
262  DeviceFactory::CreateInput(Str2DT(Type),
263  (std::string)Name);
264 
265  switch (Str2DT(Type)) {
266  case DTMidiPort:
267  static_cast<InputMidiPort *>(In.get()) -> SetDevId(DevId);
268  case DTNotSet:
269  case DTUnknown:
270  case DTMidiFile:
271  case DTGis:
272  default:
273  /* do nothing, here */
274  ;
275  }
276  GETLINE;
277  DEBUGLOG2(routing,("+%s"),s.c_str());
278 
279  // Routen lesen
280  while ( Str2DT(s) == DTUnknown ) {
281  // Route lesen
282  char Type[s.length()];
283  int IFrom = 0, ITo = 0, boxid = 0, BoxActive = 0,
284  OutDev = -1, OFrom = -1, OTo = -1, ONoDrum = 1;
285  test = std::sscanf(s.c_str(),
286  ("%s %d %d %d %d %d %d %d %d"),
287  Type, &IFrom, &ITo, &boxid, &BoxActive,
288  &OutDev, &OFrom, &OTo, &ONoDrum);
289 
290  if ( test < 9 ) {
291  error = true;
292  }
293 
294 #if 0
295  test = SSCANF(s.c_str(),
296  ("%s %d %d %d %d %d %d %d %d"),
297  Type, &IFrom, &ITo, &boxid,
298  &BoxActive, &OutDev, &OFrom, &OTo,
299  &ONoDrum);
300 
301  if ( test < 9 ) {
302  error = true;
303  }
304 
305 #endif
306  DEBUGLOG2(routing,("%d parameters read: Type = '%s', IFrom = %d, ITo = %d"),
307  test, (const char *)Type, IFrom, ITo);
308  DEBUGLOG2(routing,(" boxid = %d, BoxActive= %d, OutDev = %d, OFrom = %d, OTo = %d, ONoDrum = %d"), boxid, BoxActive, OutDev, OFrom, OTo, ONoDrum);
309 
310  OutputDevice Out = GetOut(OutDev);
311  Box box = BoxClass::GetOrCreateBox(boxid);
312  Route r(RouteFactory::Create(In, Out,
313  Str2RT(Type),
314  IFrom, ITo, box,
315  BoxActive,
316  OFrom, OTo, ONoDrum != 0));
317  In->Add(r);
318  GETLINE;
319  DEBUGLOG2(routing,("+%s"),s.c_str());
320  }
321  }
322  if (error) {
323  STUB;
324  }
325  return;
326  }
#define GETLINE
Definition: RouteCompat.cpp:47
#define STUB
Definition: debug.h:250
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:121
TRouteClass< InputDevice, OutputDevice, Box >::Route Route
Definition: Route.h:545
#define SSCANF
Definition: mhDefs.h:62
CommonTypedDeviceAPI< OutputDeviceClass >::DevicePtr OutputDevice
Definition: Device.h:836
#define TRACE
Definition: debug.h:245
CommonTypedDeviceAPI< InputDeviceClass >::DevicePtr InputDevice
Definition: Device.h:1009
#define DEBUGLOG2(level,...)
Definition: debug.h:241
static DevType Str2DT(const std::string type)
Definition: RouteCompat.cpp:76
static RouteType Str2RT(char *type)
parse a string representation of a route type
Definition: RouteCompat.cpp:64
static OutputDevice GetOut(int nr)
Definition: RouteCompat.cpp:50
#define UNREACHABLE
Definition: debug.h:254
template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::LoadRoutes ( tree_storage config)
static

Load the current routes from a tree storage.

This function loads all routs from a tree based storage. config (tree_storage *) storage driver to use for saving.

Definiert in Zeile 247 der Datei Route.cpp.

Benutzt mutabor::RouteFactory::Create(), DEBUGLOGTYPE, mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDevice(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDevice(), mutabor::tree_storage::GetPath(), mutabor::Device::IDTypeFile, intrusive_ptr_get_refcount(), mutASSERT, mutabor::tree_storage::Read(), mutabor::tree_storage::toFirstLeaf(), mutabor::tree_storage::toLeaf(), mutabor::tree_storage::toNextLeaf(), mutabor::tree_storage::toParent() und TRACET.

248  {
249 #ifdef DEBUG
250  std::string oldpath = config.GetPath();
251 #endif
252  config.toLeaf("Routes");
253 
254  int i = config.toFirstLeaf("Route");
255  while (i != wxNOT_FOUND) {
256  DEBUGLOGTYPE(config,Route,("Loading route with id %d."), i);
257  // \todo replace -1 by a correct default
258  int inputid = config.Read("Input Device", -1);
259  int outputid = config.Read("Output Device", -1);
260  TRACET(thistype);
262  TRACET(thistype);
264  TRACET(thistype);
265  Route route = RouteFactory::Create(in,out);
266  TRACET(thistype);
267  if (route)
268  route -> Load(config);
269  DEBUGLOGTYPE(smartptr,thistype,
270  ("route is %p (%d)"),
271  (void*)route.get(),
272  (int)intrusive_ptr_get_refcount(route.get()));
273  i = config.toNextLeaf("Route");
274  }
275 
276  config.toParent(2);
277  mutASSERT(oldpath == config.GetPath());
278  }
#define DEBUGLOGTYPE(level, type,...)
Definition: debug.h:242
static DevicePtr GetDevice(int id, devidtype kind)
Scan the list of input devices for a given id.
#define mutASSERT(expr)
#define TRACET(type)
Definition: debug.h:247
virtual void Load(tree_storage &config)
Read the route into from a tree based configuration.
Definition: Route.cpp:88
TRouteClass thistype
Definition: Route.h:113
size_t intrusive_ptr_get_refcount(intrusive_ptr_T *obj)
boost::intrusive_ptr< TRouteClass > Route
Definition: Route.h:119
static Route Create()
Creates a generic route.
Definition: Route.h:595
static void mutabor::RouteFactory::LoadRoutes ( tree_storage config)
inlinestatic

load the routes from a tree based configuration

Parameter
configconifiguration to be read from

Definiert in Zeile 656 der Datei Route.h.

Benutzt mutabor::RouteFactory::DoLoadRoutes() und mutabor::RouteFactory::factory.

Wird benutzt von mutaborGUI::MutRouteWnd::CmRouteLoad() und LoadRoutes().

656  {
657  if (factory)
658  factory->DoLoadRoutes(config);
659  else
660  BOOST_THROW_EXCEPTION( RouteFactoryNotSet());
661 // UNREACHABLECT(RouteFactory);
662  }
virtual void DoLoadRoutes(tree_storage &config) const
load the routes from a tree based configuration
Definition: Route.cpp:573
static RouteFactory * factory
Pointer to the current factory.
Definition: Route.h:743
static void mutabor::BoxClass::lock_callback ( hidden::mutabor_logic_parsed logic)
static
static void mutabor::BoxClass::log_action ( mutabor_box_type box,
const char *  action 
)
static
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::MidiAnalysis ( const std::vector< unsigned char > *  midiCode)
inline

Definiert in Zeile 209 der Datei Route.h.

209  {
210 #if 0
211  static const int midilength[8] = {
213  3, 3, 3, 3, 2, 2, 3, 1
214  };
215 #endif
216 
217  if (!(box && box->IsNormal() && Active )) return;
218  if (!(midiCode->at(0) & 0x80)) {
219  UNREACHABLEC;
220  return;
221  }
222 #if 0
223  int len = midilength[(midiCode->at(0) & 0x70) >> 4];
224  for (int i = 0; i < len; i++) {
225  if (box)
226  box->MidiAnalysis(midiCode & 0xff);
227  midiCode >>= 8;
228  }
229 #endif
230  if (box) box->MidiAnalysis(midiCode);
231  }
#define UNREACHABLEC
Definition: debug.h:256
void mutabor::BoxClass::MidiAnalysis ( const std::vector< unsigned char > *  midiCode)
inline

Definiert in Zeile 532 der Datei Box.h.

Benutzt mutabor::BoxClass::box und mutabor::hidden::MidiAnalysis().

532  {
533  scoped_watchdog lock(this);
534  hidden::MidiAnalysis(box, midiCode->data(), midiCode->size());
535  }
struct mutabor_box_type * box
Definition: Box.h:810
void MidiAnalysis(mutabor_box_type *box, const uint8_t *message, size_t size)
Definition: Execute.cpp:1069
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::MidiOut ( midi_string data)
inline

Definiert in Zeile 233 der Datei Route.h.

233  {
234  if (Out)
235  Out->MidiOut(box,data);
236  }
OutputDevice Out
Definition: Route.h:463
void mutabor::BoxClass::MidiOut ( struct midiliste outliste)

Definiert in Zeile 734 der Datei Box.cpp.

Benutzt mutabor::hidden::midiliste::midi_code, mutabor::hidden::midi_list_laenge() und mutabor::BoxClass::routes.

Wird benutzt von mutabor::BoxClass::MidiOutCallback().

734  {
735  size_t laenge = midi_list_laenge(outliste);
736  midi_string data(laenge);
737  struct midiliste * cursor = outliste;
738  uint8_t * bcursor = data.data();
739  while (cursor != NULL) {
740  (*bcursor++) = (uint8_t) cursor->midi_code;
741  cursor = cursor -> next;
742  }
743 
744  for (routeListType::const_iterator R = routes.begin();
745  R != routes.end(); R++) {
746  (*R) -> MidiOut(data);
747  }
748  }
void MidiOut(struct midiliste *outliste)
Definition: Box.cpp:734
int midi_list_laenge(const struct midiliste *list)
Definition: Parser.cpp:114
std::vector< uint8_t > midi_string
Definition: Device.h:75
routeListType routes
Definition: Box.h:813
void mutabor::OutputDeviceClass::MidiOut ( mutabor::Box  box,
midi_string  data 
)
inline

Definiert in Zeile 895 der Datei Device.h.

Benutzt mutabor::OutputDeviceClass::do_MidiOut() und mutabor::OutputDeviceClass::write_lock.

895  {
896  ScopedLock lock(write_lock);
897  do_MidiOut(box,data);
898  }
wxMutexLocker ScopedLock
Definition: thread.h:57
virtual void do_MidiOut(mutabor::Box box, midi_string data)=0
void mutabor::OutputDeviceClass::MidiOut ( uint8_t *  p,
size_t  n 
)
inline

Definiert in Zeile 899 der Datei Device.h.

Benutzt mutabor::OutputDeviceClass::do_MidiOut() und mutabor::OutputDeviceClass::write_lock.

899  {
900  ScopedLock lock(write_lock);
901  do_MidiOut(p,n);
902  }
wxMutexLocker ScopedLock
Definition: thread.h:57
virtual void do_MidiOut(mutabor::Box box, midi_string data)=0
void mutabor::BoxClass::MidiOutCallback ( struct mutabor::hidden::mutabor_box_type b,
struct mutabor::hidden::midiliste outliste 
)
static

Definiert in Zeile 878 der Datei Box.cpp.

Benutzt mutabor::BoxClass::MidiOut().

879  {
880  BoxClass * box =
881  reinterpret_cast<BoxClass *>(b -> userdata);
882  if (!box) return;
883  box->MidiOut(outliste);
884  }
struct mutabor_box_type * box
Definition: Box.h:810
BoxClass(int id=-1)
Definition: Box.cpp:810
void mutabor::ChannelData::MidiReset ( )

Reset the controllers according to the MIDI standard.

This function resets the Midi Controllers according to RP15 from the MMA.

Siehe auch
http://www.midi.org/techspecs/rp15.php

Definiert in Zeile 48 der Datei Device.cpp.

Benutzt mutabor::ChannelData::bend, mutabor::ChannelData::controller, mutabor::midi::get_default_controller_value() und mutabor::ChannelData::set_controller().

Wird benutzt von mutabor::CommonMidiOutput< T, D >::do_Controller().

48  {
49  /* RP 15 spec is availlable at http://www.midi.org/techspecs/rp15.php */
50  controller_vector::iterator start = controller.begin();
51  for (controller_vector::iterator i = start;
52  i != controller.end();
53  ++i) {
54  int value = *i;
55  if (value < 0)
56  continue;
57  int ctrl = i-start;
58  int newvalue = midi::get_default_controller_value(ctrl);
59  if (newvalue >= 0) {
60  set_controller(ctrl,newvalue);
61  }
62  }
63  // we do not send the reset controllers message so we
64  // may not forget the changed controllers
65 
66  // first_unchanged = 0;
67  // looped = false;
68 
69  // program change should not be reset
70  // Sound = -1;
71 
72  // bank should not be reset
73  // bank_coarse = -1;
74  //bank_fine = -1;
75 
76  bend = 0;
77 
78  // todo:
79  // channel pressure = 0
80  // polyphonic pressure = 0 for all notes
81  }
int get_default_controller_value(int ctrl)
Definition: MidiKern.h:434
controller_vector controller
Definition: Device.h:491
int set_controller(size_t number, int data)
Definition: Device.h:155
int mutabor::BoxClass::MoveInList ( int  count)
virtual

Move the box in the box list.

Parameter
countNumber of places the box should be moved up. Negative values indicate downwards direction.
Rückgabe
new position in the box list.

Erneute Implementation in mutaborGUI::BoxData.

Definiert in Zeile 253 der Datei Box.cpp.

Wird benutzt von mutaborGUI::BoxData::MoveInList().

253  {
254  if (!count) return -1;
255  typename listtype::iterator pos = FindInBoxList(Box(this));
256 
257  if (pos == boxList.end()) return -1;
258  int current_pos = pos - boxList.begin();
259  typename listtype::iterator newpos;
260  if (current_pos + count <= 0) {
261  newpos = boxList.begin();
262  count = -1;
263  } else if ((size_t)(current_pos + count) >= boxList.size()) {
264  newpos = boxList.end() - 1;
265  count = 1;
266  } else {
267  newpos = pos + count;
268  }
269 
270  if (count > 0)
271  std::rotate (pos, newpos, newpos + 1);
272  else
273  std::rotate (newpos, pos, pos + 1);
274  return newpos - boxList.begin();
275 
276  }
static listtype boxList
Definition: Box.h:805
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:121
static listtype::iterator FindInBoxList(Box b)
Definition: Box.h:856
template<class T , class P , class L >
int mutabor::CommonTypedDeviceAPI< T, P, L >::MoveInList ( int  count)
virtual

Move the device in the device list.

Parameter
countNumber of places the device should be moved up. Negative values indicate downwards direction.
Rückgabe
new position in the device list.

Definiert in Zeile 253 der Datei Device.cpp.

253  {
254  if (!count) return -1;
255  thistype * dev = static_cast <thistype *> (this);
256  typename listtype::iterator pos = FindInDeviceList(DevicePtr(dev));
257 
258  if (pos == deviceList.end()) return -1;
259  int current_pos = pos - deviceList.begin();
260  typename listtype::iterator newpos;
261  if (current_pos + count <= 0) {
262  newpos = deviceList.begin();
263  count = -1;
264  } else if (current_pos + count >= deviceList.size()) {
265  newpos = deviceList.end() - 1;
266  count = 1;
267  } else {
268  newpos = pos + count;
269  }
270  if (newpos == deviceList.end()) --newpos;
271  if (count > 0)
272  std::rotate (pos, newpos, newpos + 1);
273  else
274  std::rotate (newpos, pos, pos + 1);
275  return newpos - deviceList.begin();
276 
277  }
static listtype::iterator FindInDeviceList(DevicePtr dev)
Definition: Device.h:816
static listtype deviceList
Definition: Device.h:694
bool mutabor::BoxClass::MoveRoutes ( Box newclass)
virtual

Move routes to another device.

Definiert in Zeile 170 der Datei Box.cpp.

Benutzt mutaborGUI::IsOpen(), mutabor::reconnect(), TRACEC und UNREACHABLEC.

170  {
171  TRACEC;
172  if (!newclass->routes.empty()) {
173  UNREACHABLEC;
174  return false;
175  }
176  bool open = IsOpen();
177  // Flawfinder: ignore
178  if (open) {
179  if (!newclass->IsOpen()) newclass->Open();
180  }
181  Box thisptr(this);
182  routeListType::iterator i;
183  while ((i = routes.begin()) != routes.end()) {
184  reconnect(*i, thisptr, newclass);
185  }
186  TRACEC;
187  return true;
188  }
bool IsOpen()
Definition: Box.h:432
#define TRACEC
Definition: debug.h:246
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:121
bool reconnect(Route r, OutputDevice oldout, OutputDevice newout)
routeListType routes
Definition: Box.h:813
#define UNREACHABLEC
Definition: debug.h:256
template<class T , class P , class L >
bool mutabor::CommonTypedDeviceAPI< T, P, L >::MoveRoutes ( DevicePtr newclass)
virtual

Move routes to another device.

Definiert in Zeile 183 der Datei Device.cpp.

Benutzt mutaborGUI::IsOpen(), mutabor::reconnect(), TRACEC und UNREACHABLEC.

183  {
184  TRACEC;
185  if (!newclass->routes.empty()) {
186  UNREACHABLEC;
187  return false;
188  }
189  bool open = IsOpen();
190  // Flawfinder: ignore
191  if (open) {
192  if (!newclass->IsOpen()) newclass->Open();
193  }
194  DevicePtr thisptr(static_cast<thistype *>(this));
195  routeListType::iterator i;
196  while ((i = routes.begin()) != routes.end()) {
197  reconnect(*i, thisptr, newclass);
198  }
199  TRACEC;
200  return true;
201  }
routeListType routes
Definition: Device.h:653
bool IsOpen() const
Definition: Device.h:633
#define TRACEC
Definition: debug.h:246
bool reconnect(Route r, OutputDevice oldout, OutputDevice newout)
#define UNREACHABLEC
Definition: debug.h:256
int ChordNote::MutNoteOff ( )

Definiert in Zeile 950 der Datei GIS_Head.cpp.

Benutzt CNAlter, CNNoteOn, mutabor::CurrentTime, GetGisType() und GTNote.

951 {
952  if ( !(Status & CNNoteOn) )
953  return 1;
954 
955  if ( GetGisType(*Cursor) != GTNote )
956  return 1;
957 
958  if ( CurrentTime ) {
959  ((GisNote*)(*Cursor))->Duration = CurrentTime;
960  Cursor = &(*Cursor)->Next;
961  } else // note with no duration
962  {
963  // delete empty note
964  delete *Cursor;
965  *Cursor = 0;
966  // delete alter
967 
968  if ( Status & CNAlter && !(*AlterBegin)->Next ) {
969  delete *AlterBegin;
970  Cursor = AlterBegin;
971  *Cursor = 0;
972  Status -= CNAlter;
973  }
974 
975  LastSep = 0;
976 
977  if ( nTie ) nTie--;
978  }
979 
980  CurrentTime = 0;
981 
982  Status -= CNNoteOn;
983  Boss->NoteOn--;
984  return 0;
985 }
Definition: GIS.h:107
GisToken ** Cursor
Definition: GIS_Head.h:435
std::string * LastSep
Definition: GIS_Head.h:445
GisToken ** AlterBegin
Definition: GIS_Head.h:442
GisToken * Next
Definition: GIS.h:120
GisWriteHead * Boss
Definition: GIS_Head.h:436
char Status
Definition: GIS_Head.h:441
char NoteOn
Definition: GIS_Head.h:325
#define CNAlter
Definition: GIS_Head.h:422
Definition: GIS.h:423
GisType GetGisType(GisToken *token)
Definition: GIS.cpp:824
int nTie
Definition: GIS_Head.h:444
#define CNNoteOn
Definition: GIS_Head.h:423
mutabor::frac CurrentTime
Definition: GIS_Head.h:437
int ChordNote::MutNoteOn ( int  key,
double  pitch,
int  instrId,
int  taste,
std::string  sep 
)

Definiert in Zeile 922 der Datei GIS_Head.cpp.

Benutzt CNAlter, CNNoteOn, GMN_NO_KEY, Note(), GisToken::Sep und TTalter.

923 {
924  if ( Status & CNNoteOn )
925  return 1;
926 
927  if ( pitch != Pitch && key != GMN_NO_KEY ) {
928  CheckCloseAlter();
929  AlterBegin = Cursor;
930  AddGis(new GisTagBegin(TTalter, 0, new GisParaReal(pitch, ">("), "<", 0));
931  Status |= CNAlter;
932  Pitch = pitch;
933  }
934 
935  GisToken *Note = new GisNote(key, Boss->GetOctave(), Boss->GetKey(), sep);
936 
937  *Cursor = Note;
938  LastSep = &Note->Sep;
939  InstrId = instrId;
940  Taste = taste;
941  Key = key;
942  Status |= CNNoteOn;
943  Boss->NoteOn++;
944 
945  if ( nTie ) nTie++;
946 
947  return 0;
948 }
GisToken ** Cursor
Definition: GIS_Head.h:435
int Taste
Definition: GIS_Head.h:446
std::string * LastSep
Definition: GIS_Head.h:445
#define TTalter
Definition: GIS.h:84
#define GMN_NO_KEY
Definition: GIS.h:89
void CheckCloseAlter()
Definition: GIS_Head.cpp:860
GisToken ** AlterBegin
Definition: GIS_Head.h:442
int GetOctave()
Definition: GIS_Head.h:386
Definition: GIS.h:116
int Note(const std::string &name, const std::string &accedentials, int octave, const mutabor::frac &duration)
Definition: GIS.cpp:700
GisWriteHead * Boss
Definition: GIS_Head.h:436
char Status
Definition: GIS_Head.h:441
int Key
Definition: GIS_Head.h:447
char NoteOn
Definition: GIS_Head.h:325
void AddGis(GisToken *token)
Definition: GIS_Head.cpp:852
int InstrId
Definition: GIS_Head.h:440
double Pitch
Definition: GIS_Head.h:448
std::string Sep
Definition: GIS.h:121
int GetKey()
Definition: GIS_Head.h:394
#define CNAlter
Definition: GIS_Head.h:422
Definition: GIS.h:423
int nTie
Definition: GIS_Head.h:444
#define CNNoteOn
Definition: GIS_Head.h:423
int Name2Key ( const std::string  name)

Definiert in Zeile 275 der Datei GIS.cpp.

Wird benutzt von GisNote::GetKey().

276 {
277  char notes[] = "c d ef g a b";
278  size_t l = name.length();
279  int i = 11;
280 
281  if ( l == 1 ) {
282  while ( i >= 0 ) {
283  if ( notes[i] == name[0] )
284  break;
285 
286  i--;
287  }
288 
289  if ( name[0] == 'h' )
290  return 11;
291  else
292  return i;
293  } else if ( l == 3 ) {
294  while ( i >= 0 ) {
295  if ( notes[i] == name[0] )
296  break;
297 
298  i--;
299  }
300 
301  if ( i != -1 ) i++;
302 
303  return i;
304  } else
305  return -1;
306 }
bool mutabor::NeedsRealTime ( )

Definiert in Zeile 742 der Datei Device.cpp.

Benutzt mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList() und TRACE.

Wird benutzt von mutaborGUI::MutFrame::CmDoActivate().

743  {
744  TRACE;
745  const OutputDeviceList& listo = OutputDeviceClass::GetDeviceList();
746  for (OutputDeviceList::const_iterator Out = listo.begin();
747  Out != listo.end(); Out++)
748  if ( (*Out)->NeedsRealTime() ) {
749  TRACE;
750  return true;
751  }
752 
753  const InputDeviceList& listi = InputDeviceClass::GetDeviceList();
754  for (InputDeviceList::const_iterator In = listi.begin();
755  In != listi.end(); In++)
756  if ( (*In)->NeedsRealTime() ) {
757  TRACE;
758  return true;
759  }
760 
761  TRACE;
762  return false;
763  }
CommonTypedDeviceAPI< OutputDeviceClass >::listtype OutputDeviceList
Definition: Device.h:838
CommonTypedDeviceAPI< InputDeviceClass >::listtype InputDeviceList
Definition: Device.h:1011
#define TRACE
Definition: debug.h:245
virtual bool mutabor::OutputDeviceClass::NeedsRealTime ( )
inlinevirtual

Erneute Implementation in mutabor::OutputMidiPort.

Definiert in Zeile 934 der Datei Device.h.

934  {
935  return false;
936  }
virtual bool mutabor::InputDeviceClass::NeedsRealTime ( )
inlinevirtual

Erneute Implementation in mutabor::InputMidiPort.

Definiert in Zeile 1206 der Datei Device.h.

1206  {
1207  return false;
1208  }
int NextSequenz ( )

Definiert in Zeile 691 der Datei GIS.cpp.

Benutzt BuildTag(), DEBUGLOG2 und TagMode.

Wird benutzt von DoParse().

692 {
693  DEBUGLOG2(gmnfile,(", "));
694 
695  if ( TagMode ) BuildTag();
696 
697  return 0;
698 }
char TagMode
Definition: GIS.cpp:109
int BuildTag()
Definition: GIS.cpp:530
#define DEBUGLOG2(level,...)
Definition: debug.h:241
template<class I = InputDevice, class O = OutputDevice, class B = Box>
mutabor::TRouteClass< I, O, B >::NoInputDevice::NoInputDevice ( const thistype r)
inline

Definiert in Zeile 137 der Datei Route.h.

Benutzt mutabor::TRouteClass< I, O, B >::NoInputDevice::route.

138  {
139  route = const_cast<thistype *>(r);
140  }
TRouteClass thistype
Definition: Route.h:113
template<class I = InputDevice, class O = OutputDevice, class B = Box>
mutabor::TRouteClass< I, O, B >::NoOutputDevice::NoOutputDevice ( const thistype r)
inline

Definiert in Zeile 128 der Datei Route.h.

Benutzt mutabor::TRouteClass< I, O, B >::NoOutputDevice::route.

128  :
129  invalid_argument(_mutN("No such output device")) {
130  route = const_cast<thistype *>(r);
131  }
#define _mutN(x)
Definition: Defs.h:116
TRouteClass thistype
Definition: Route.h:113
int Note ( const std::string &  name,
const std::string &  accedentials,
int  octave,
const mutabor::frac duration 
)

Definiert in Zeile 700 der Datei GIS.cpp.

Benutzt BuildTag(), Current, DEBUGLOG2, GisToken::Next, octave, mutabor::str() und TagMode.

Wird benutzt von ChordNote::MutNoteOn() und ReadNote().

704 {
705  DEBUGLOG2(gmnfile,("%s%s%d*%s: Note '%s' %s Oktave %d, Duration: %s "),
706  name.c_str(),
707  accedentials.c_str(),
708  octave,
709  str(duration).c_str(),
710  name.c_str(),
711  accedentials.c_str(),
712  octave,
713  str(duration).c_str());
714 
715  if ( TagMode ) BuildTag();
716 
717  GisNote *Note = new GisNote(name, accedentials, octave, duration, Sep);
718 
719  *Current = Note;
720 
721  Current = &(Note->Next);
722 
723  return 0;
724 }
char TagMode
Definition: GIS.cpp:109
std::string str(T obj)
Definition: Defs.h:110
std::string Sep
Definition: GSP.cpp:39
GisToken * Next
Definition: GIS.h:120
int Note(const std::string &name, const std::string &accedentials, int octave, const mutabor::frac &duration)
Definition: GIS.cpp:700
int BuildTag()
Definition: GIS.cpp:530
static int octave
Definition: GSP.cpp:66
GisToken ** Current
Definition: GIS.cpp:107
#define DEBUGLOG2(level,...)
Definition: debug.h:241
Definition: GIS.h:423
static std::string accedentials
Definition: GSP.cpp:68
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::NoteOff ( int  key,
int  velocity,
size_t  make_unique 
)
inline

Definiert in Zeile 191 der Datei Route.h.

193  {
194  if (Active) {
195  box->DeleteNote(key,
196  make_unique,
197  session_id);
198  }
199  if (Out) {
200  Out->NoteOff(box,
201  key,
202  velocity,
203  this,
204  make_unique,
205  false);
206  }
207  }
idtype< TRouteClass< I, O > > session_id
Definition: Route.h:473
OutputDevice Out
Definition: Route.h:463
void mutabor::OutputDeviceClass::NoteOff ( Box  box,
int  taste,
int  velo,
RouteClass r,
size_t  id,
bool  is_note_on 
)
inline

Definiert in Zeile 859 der Datei Device.h.

Benutzt mutabor::OutputDeviceClass::do_NoteOff() und mutabor::OutputDeviceClass::write_lock.

Wird benutzt von CommonMidiOutputTest::testNoteOnOff() und OutputMidiFileTest::testNoteOnOff().

864  {
865  ScopedLock lock(write_lock);
866  do_NoteOff(box,taste,velo,r,id,is_note_on);
867  }
virtual void do_NoteOff(Box box, int taste, int velo, RouteClass *r, size_t id, bool is_note_on)=0
wxMutexLocker ScopedLock
Definition: thread.h:57
void mutabor::InputDeviceClass::NoteOff ( Route R,
int  key,
int  velocity,
size_t  make_unique 
)
inline

Definiert in Zeile 1278 der Datei Device.h.

Benutzt mutabor::InputDeviceClass::DoNoteOff() und mutabor::InputDeviceClass::write_lock.

Wird benutzt von mutabor::InputGis::Proceed().

1281  {
1282  ScopedLock lock(write_lock);
1283  DoNoteOff(R, key, velocity, make_unique);
1284  }
wxMutexLocker ScopedLock
Definition: thread.h:57
void DoNoteOff(Route &R, int key, int velocity, size_t make_unique)
Definition: Device.h:1286
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::NoteOn ( int  key,
int  velocity,
size_t  make_unique,
const ChannelData input_channel_data,
void *  userdata 
)
inline

Definiert in Zeile 171 der Datei Route.h.

175  {
176  if (Active) {
177  // global C part
178  box->AddNote(key, make_unique, session_id, userdata);
179  DEBUGLOG (routing, "(key = %d, channel = %lu, id = %lu)" ,
180  key,
181  (unsigned long)get_session_id(),
182  (unsigned long)make_unique);
183  }
184  if (Out) {
185  Out->NoteOn(box,
186  key, velocity, this, make_unique,
187  input_channel_data);
188  }
189  }
#define DEBUGLOG(level,...)
Definition: debug.h:240
idtype< TRouteClass< I, O > > session_id
Definition: Route.h:473
size_t get_session_id() const
Definition: Route.h:400
OutputDevice Out
Definition: Route.h:463
void mutabor::OutputDeviceClass::NoteOn ( Box  box,
int  taste,
int  velo,
RouteClass r,
size_t  id,
const ChannelData input_channel_data 
)
inline

Definiert in Zeile 849 der Datei Device.h.

Benutzt mutabor::OutputDeviceClass::do_NoteOn() und mutabor::OutputDeviceClass::write_lock.

Wird benutzt von CommonMidiOutputTest::testMoreNotesThanChannels(), CommonMidiOutputTest::testNoteOnOff() und OutputMidiFileTest::testNoteOnOff().

854  {
855  ScopedLock lock(write_lock);
856  do_NoteOn(box,taste,velo,r,id,input_channel_data);
857 
858  }
virtual void do_NoteOn(Box box, int taste, int velo, RouteClass *r, size_t id, const ChannelData &input_channel_data)=0
Really Send the beginning of a sounding note.
wxMutexLocker ScopedLock
Definition: thread.h:57
void mutabor::InputDeviceClass::NoteOn ( Route R,
int  key,
int  velocity,
size_t  make_unique,
const ChannelData input_channel_data,
void *  userdata 
)
inline

Definiert in Zeile 1252 der Datei Device.h.

Benutzt mutabor::InputDeviceClass::current_keys_type::add(), mutabor::InputDeviceClass::current_keys, DEBUGLOG und mutabor::InputDeviceClass::write_lock.

Wird benutzt von mutabor::InputGis::Proceed().

1255  {
1256  ScopedLock lock(write_lock);
1257  DEBUGLOG(routing,("(key = %d, channel = %lu, id = %lu)"),
1258  key,
1259  (unsigned long)R->get_session_id(),
1260  (unsigned long)make_unique);
1261 
1262  current_keys.add(key,
1263  velocity,
1264  make_unique,
1265  R,
1266  this,
1267  input_channel_data,
1268  userdata);
1269  if (R) {
1270  R->NoteOn(key,
1271  velocity,
1272  make_unique,
1273  input_channel_data,
1274  userdata);
1275  }
1276  }
#define DEBUGLOG(level,...)
Definition: debug.h:240
wxMutexLocker ScopedLock
Definition: thread.h:57
void * userdata
Definition: Device.h:676
current_keys_type current_keys
Definition: Device.h:1314
void add(int key, int velocity, int unique_id, Route &R, InputDevice i, const ChannelData &c, void *userdata)
Definition: Device.h:1060
template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
size_t mutabor::CommonTypedDeviceAPI< T, P, L >::nRoutes ( )
inline

Definiert in Zeile 741 der Datei Device.h.

741 { return routes.size(); };
routeListType routes
Definition: Device.h:653
bool mutabor::BoxClass::Open ( )
inline

Definiert in Zeile 416 der Datei Box.h.

Benutzt mutabor::BoxClass::DoOpen() und mutabor::BoxClass::open.

416  {
417  BoxLock lock(this);
418  if (!open)
419  open = DoOpen();
420  return open;
421  }
virtual bool DoOpen()
Definition: Box.cpp:389
virtual bool mutabor::Device::Open ( )
pure virtual
bool mutabor::OutputDeviceClass::Open ( )
inlinevirtual
bool mutabor::OpenAll ( int  mode)

Definiert in Zeile 436 der Datei Box.cpp.

Benutzt _mut, mutabor::BoxClass::CloseAll(), mutabor::BoxClass::GetBoxList(), mutabor::InOpen(), mutabor::BoxClass_CallOpen::ok, mutabor::OpenAllBoxes, mutabor::OpenAllInDevices, mutabor::OpenAllOutDevices, mutabor::OutClose() und mutabor::OutOpen().

Wird benutzt von mutabor::BoxClass::ActivateAll() und mutabor::InputDeviceClass::BatchPlay().

436  {
437  BoxClass_CallOpen callopen;
438  bool openout = mode & OpenAllOutDevices;
439  bool openboxes = mode & OpenAllBoxes;
440  bool openin = mode & OpenAllInDevices;
441  if (openout)
442  if (!mutabor::OutOpen())
443  return false;
444 
445  if (openboxes) {
446  BoxListType & boxList = const_cast<BoxListType &>(BoxClass::GetBoxList());
447  std::for_each(boxList.begin(),boxList.end(),callopen);
448  if (!callopen.ok) {
449  BoxClass::CloseAll();
450  if (openout)
451  OutClose();
452  return false;
453  }
454  }
455 
456  if (openin) {
457  if (!InOpen() ) {
458  if (openboxes)
459  BoxClass::CloseAll();
460  if (openout)
461  OutClose();
462  return false;
463  }
464  }
465 
466 
467 #if 0
468  if ( !ok ) {
469  wxMessageBox(Fmeldung, _mut("Activation error"), wxOK | wxICON_ASTERISK );
470 
471  return false;
472  }
473 #endif
474  return true;
475  }
void OutClose()
Definition: Device.cpp:696
std::vector< Box > BoxListType
Definition: Box.h:123
#define _mut
Definition: Defs.h:117
bool InOpen()
Definition: Device.cpp:712
bool OutOpen()
Definition: Device.cpp:678
int OpenFile ( const std::string &  Name)

Definiert in Zeile 53 der Datei GSP_File.cpp.

Benutzt bad und File.

Wird benutzt von GspParse().

54 {
55  /* tell boost that we are using UTF-8 file names */
56  boost::filesystem::detail::utf8_codecvt_facet utf8;
57  boost::filesystem::path p;
58  p.assign(Name, utf8);
59 
60 // File = new STD_PRE::ifstream(Name, STD_PRE::ios::in/*, 0/*int = filebuf::openprot*/);
61  File = new boost::filesystem::ifstream(p, std::ios::in);
62  if (!File ) return -1;
63  if (!File->is_open()) return -2;
64  if (File->bad()) return -3;
65  if (File->fail()) return -4;
66  return 0;
67 #if 0
68  initialized = false;
69  return bad=(!(File->Open()));
70  return mutStreamBad(*File);
71 #endif
72 }
boost::filesystem::ifstream * File
Definition: GSP_File.cpp:40
static int bad
Definition: GSP_File.cpp:43
template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
mutabor::CommonTypedDeviceAPI< T, P, L >::operator const thistype & ( ) const
inline

Definiert in Zeile 770 der Datei Device.h.

770  {
771  return *(static_cast <const thistype *>(this));
772  }
template<class I , class O , class B >
mutabor::TRouteClass< I, O, B >::operator std::string ( ) const
virtual

Definiert in Zeile 310 der Datei Route.cpp.

Benutzt mutabor::str().

311  {
312  return boost::str(boost::format("\
313 TRouteClass<I,O,B>:\n\
314  userdata = %p\n\
315  Out = %p\n\
316  In = %p\n\
317  fileid = %d\n\
318  sess.id = %lu\n\
319  inputid = %d\n\
320  outputid = %d\n\
321  Box = %p\n\
322  Type = %d\n\
323  IFrom = %d\n\
324  ITo = %d\n\
325  OFrom = %d\n\
326  OTo = %d\n\
327  flags: Active:%d, ONoDrum:%d\n\
328 ")
329  % (void *)userdata
330  % (void*)Out.get()
331  % (void*)In.get()
332  % routefile_id
333  % (unsigned long)session_id()
334  % inputid
335  % outputid
336  % box.get()
337  % Type
338  % IFrom
339  % ITo
340  % OFrom
341  % OTo
342  % Active
343  % ONoDrum);
344  }
InputDevice In
Definition: Route.h:464
RouteType Type
Definition: Route.h:480
std::string str(T obj)
Definition: Defs.h:110
idtype< TRouteClass< I, O > > session_id
Definition: Route.h:473
OutputDevice Out
Definition: Route.h:463
mutabor::Device::operator std::string ( ) const
virtual

Erneute Implementation in mutabor::InputDeviceClass, mutabor::OutputDeviceClass, mutabor::CommonTypedDeviceAPI< T, P, L >, mutabor::CommonTypedDeviceAPI< OutputDeviceClass >, mutabor::CommonTypedDeviceAPI< InputDeviceClass >, mutabor::InputMidiFile, mutabor::OutputMidiFile, mutabor::InputMidiPort, mutabor::OutputMidiPort, mutabor::CommonFileInputDevice, mutabor::InputGis, mutabor::OutputGis und mutabor::CommonFileOutputDevice.

Definiert in Zeile 91 der Datei Device.cpp.

Benutzt mutabor::NoBox und mutabor::str().

91  {
92  std::string routeString;
93  for (routeListType::const_iterator r = routes.begin();
94  r != routes.end(); r++)
95  routeString += boost::str(boost::format(" %d:(%d->%d->%d)")
96  % ((*r)->get_routefile_id())
97  % ((*r)->GetDeviceId(InputDevice()))
98  % ((*r)->GetBox()?(*r)->GetBox()->get_routefile_id():NoBox)
99  % ((*r)->GetDeviceId(OutputDevice())));
100 
101 
102  return boost::str(boost::format("\nDevice:\n\
103  session_id = %lu\n\
104  routefile_id = %d\n\
105  userdata = %p\n\
106  Name = '%s'\n\
107  Flags: dirty:%d, isOpen:%d\n \
108  Routes: %s\n")
109  % (unsigned long)session_id()
110  % routefile_id
111  % userdata
112  % Name
113  % dirty
114  % isOpen
115  % routeString);
116  }
routeListType routes
Definition: Device.h:653
std::string str(T obj)
Definition: Defs.h:110
idtype< Device > session_id
Id used during runtime;.
Definition: Device.h:647
void * userdata
Definition: Device.h:676
std::string Name
Definition: Device.h:649
CommonTypedDeviceAPI< OutputDeviceClass >::DevicePtr OutputDevice
Definition: Device.h:836
CommonTypedDeviceAPI< InputDeviceClass >::DevicePtr InputDevice
Definition: Device.h:1009
int routefile_id
Definition: Device.h:648
mutabor::BoxClass::operator std::string ( ) const

Definiert in Zeile 57 der Datei Box.cpp.

Benutzt mutabor::str().

57  {
58  std::string routeString;
59  for (routeListType::const_iterator r = routes.begin();
60  r != routes.end(); r++)
61  routeString += boost::str(boost::format((" %d:(%d->%d->%d)"))
62  % (*r)->get_routefile_id()
63  % (*r)->GetDeviceId(InputDevice())
64  % (*r)->GetBoxId()
65  %(*r)->GetDeviceId(OutputDevice()));
66 
67 
68  return boost::str(boost::format("\nBox:\n\
69  session_id = %lu\n\
70  routefile_id = %d\n\
71  routes: %s\n") % (unsigned long)session_id()
72  % routefile_id
73  % routeString.c_str());
74  }
std::string str(T obj)
Definition: Defs.h:110
CommonTypedDeviceAPI< OutputDeviceClass >::DevicePtr OutputDevice
Definition: Device.h:836
CommonTypedDeviceAPI< InputDeviceClass >::DevicePtr InputDevice
Definition: Device.h:1009
idtype< BoxClass > session_id
Definition: Box.h:811
routeListType routes
Definition: Box.h:813
int routefile_id
Definition: Box.h:812
template<class T , class P , class L >
mutabor::CommonTypedDeviceAPI< T, P, L >::operator std::string ( ) const
virtual

Erneute Implementation von mutabor::Device.

Erneute Implementation in mutabor::InputDeviceClass, mutabor::OutputDeviceClass, mutabor::InputMidiFile, mutabor::OutputMidiFile, mutabor::InputMidiPort, mutabor::OutputMidiPort, mutabor::CommonFileInputDevice, mutabor::InputGis, mutabor::OutputGis und mutabor::CommonFileOutputDevice.

Definiert in Zeile 281 der Datei Device.cpp.

Benutzt intrusive_ptr_get_refcount() und mutabor::str().

281  {
282  return Device::operator std::string()
283  + boost::str(boost::format("\
284 CommonTypedDeviceAPI:\n\
285  ptrct = %d\n\
286 ") % (int)intrusive_ptr_get_refcount(this));
287  }
std::string str(T obj)
Definition: Defs.h:110
size_t intrusive_ptr_get_refcount(intrusive_ptr_T *obj)
mutabor::OutputDeviceClass::operator std::string ( ) const
virtual

Erneute Implementation von mutabor::CommonTypedDeviceAPI< OutputDeviceClass >.

Erneute Implementation in mutabor::OutputMidiFile, mutabor::OutputMidiPort, mutabor::OutputGis und mutabor::CommonFileOutputDevice.

Definiert in Zeile 342 der Datei Device.cpp.

342  {
343  return CommonTypedDeviceAPI<OutputDeviceClass>::
344  operator std::string() + "\
345 OutputDeviceClass:\n\
346  no data.\n\
347 ";
348 
349  }
mutabor::InputDeviceClass::operator std::string ( ) const
virtual

Erneute Implementation von mutabor::CommonTypedDeviceAPI< InputDeviceClass >.

Erneute Implementation in mutabor::InputMidiFile, mutabor::InputMidiPort, mutabor::CommonFileInputDevice und mutabor::InputGis.

Definiert in Zeile 509 der Datei Device.cpp.

Benutzt mutabor::str().

509  {
510  return (CommonTypedDeviceAPI<InputDeviceClass>::
511  operator std::string()) + boost::str(boost::format("\
512 InputDeviceClass:\n\
513  Mode = %d\n\
514 ") % Mode);
515 
516  }
enum MutaborModeType Mode
Definition: Device.h:652
std::string str(T obj)
Definition: Defs.h:110
template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
mutabor::CommonTypedDeviceAPI< T, P, L >::operator thistype & ( )
inline

Definiert in Zeile 774 der Datei Device.h.

774  {
775  return *(static_cast <thistype *>(this));
776  }
uint8_t mutabor::InputDeviceClass::current_keys_type::hash_type::operator() ( const entry val) const
inline

Definiert in Zeile 1047 der Datei Device.h.

Benutzt mutabor::InputDeviceClass::current_keys_type::entry::key, mutabor::InputDeviceClass::current_keys_type::entry::route und mutabor::InputDeviceClass::current_keys_type::entry::unique_id.

1047  {
1048  size_t seed = 0;
1049  boost::hash_combine(seed, val.key);
1050  boost::hash_combine(seed, val.unique_id);
1051  boost::hash_combine(seed, val.route.get());
1052  return seed & 0xFF;
1053  }
ScopedRoute& mutabor::ScopedRoute::operator= ( element_type *  rhs)
inline

Definiert in Zeile 750 der Datei Route.h.

750  {
751  (*(static_cast<Route *>(this))) = rhs;
752  return *this;
753  }
TRouteClass< InputDevice, OutputDevice, Box >::Route Route
Definition: Route.h:545
ScopedRoute& mutabor::ScopedRoute::operator= ( const Route rhs)
inline

Definiert in Zeile 754 der Datei Route.h.

754  {
755  (*(static_cast<Route *>(this))) = rhs;
756  return *this;
757  }
TRouteClass< InputDevice, OutputDevice, Box >::Route Route
Definition: Route.h:545
ScopedBox& mutabor::ScopedBox::operator= ( BoxClass rhs)
inline

Definiert in Zeile 972 der Datei Box.h.

972  {
973  (*(static_cast<Box *>(this))) = rhs;
974  return *this;
975  }
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:121
ScopedBox& mutabor::ScopedBox::operator= ( const Box rhs)
inline

Definiert in Zeile 976 der Datei Box.h.

976  {
977  (*(static_cast<Box *>(this))) = rhs;
978  return *this;
979  }
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:121
ScopedInputDevice& mutabor::ScopedInputDevice::operator= ( InputDeviceClass rhs)
inline

Definiert in Zeile 1496 der Datei Device.h.

1496  {
1497  (*(static_cast<InputDevice *>(this))) = rhs;
1498  return *this;
1499  }
CommonTypedDeviceAPI< InputDeviceClass >::DevicePtr InputDevice
Definition: Device.h:1009
ScopedInputDevice& mutabor::ScopedInputDevice::operator= ( const InputDevice rhs)
inline

Definiert in Zeile 1500 der Datei Device.h.

1500  {
1501  (*(static_cast<InputDevice *>(this))) = rhs;
1502  return *this;
1503  }
CommonTypedDeviceAPI< InputDeviceClass >::DevicePtr InputDevice
Definition: Device.h:1009
ScopedOutputDevice& mutabor::ScopedOutputDevice::operator= ( OutputDeviceClass rhs)
inline

Definiert in Zeile 1512 der Datei Device.h.

1512  {
1513  (*(static_cast<OutputDevice *>(this))) = rhs;
1514  return *this;
1515  }
CommonTypedDeviceAPI< OutputDeviceClass >::DevicePtr OutputDevice
Definition: Device.h:836
ScopedOutputDevice& mutabor::ScopedOutputDevice::operator= ( const OutputDevice rhs)
inline

Definiert in Zeile 1516 der Datei Device.h.

1516  {
1517  (*(static_cast<OutputDevice *>(this))) = rhs;
1518  return *this;
1519  }
CommonTypedDeviceAPI< OutputDeviceClass >::DevicePtr OutputDevice
Definition: Device.h:836
bool mutabor::BoxClass::tone::operator== ( const tone t) const
inline

Definiert in Zeile 197 der Datei Box.h.

Benutzt mutabor::hidden::MUT_INTERVAL::active und mutabor::hidden::MUT_INTERVAL::value.

197  {
198  return active == t.active && value == t.value;
199  }
enum mutabor_interval_type_constants active
Definition: Interpre.h:81
bool mutabor::InputDeviceClass::current_keys_type::entry::operator== ( const entry e) const
inline
void mutabor::OutAddTime ( frac  time)

Definiert in Zeile 704 der Datei Device.cpp.

Benutzt mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList().

Wird benutzt von main().

705  {
706  const OutputDeviceList& list = OutputDeviceClass::GetDeviceList();
707  for (OutputDeviceList::const_iterator Out = list.begin();
708  Out != list.end(); Out++)
709  (*Out)->AddTime(time);
710  }
CommonTypedDeviceAPI< OutputDeviceClass >::listtype OutputDeviceList
Definition: Device.h:838
void mutabor::OutClose ( )

Definiert in Zeile 696 der Datei Device.cpp.

Benutzt mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList().

Wird benutzt von mutabor::InputDeviceClass::BatchPlay(), main(), mutabor::OpenAll() und mutabor::BoxClass::StopAll().

697  {
698  const OutputDeviceList& list = OutputDeviceClass::GetDeviceList();
699  for (OutputDeviceList::const_iterator Out = list.begin();
700  Out != list.end(); Out++)
701  (*Out)->Close();
702  }
CommonTypedDeviceAPI< OutputDeviceClass >::listtype OutputDeviceList
Definition: Device.h:838
bool mutabor::OutOpen ( )

Definiert in Zeile 678 der Datei Device.cpp.

Benutzt DEBUGLOG2 und mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList().

Wird benutzt von main() und mutabor::OpenAll().

679  {
680  const OutputDeviceList& list = OutputDeviceClass::GetDeviceList();
681  DEBUGLOG2(midiio,("count: %d"),(int)list.size());
682  for (OutputDeviceList::const_iterator Out = list.begin();
683  Out != list.end(); Out++)
684  if ( !(*Out)->Open() ) {
685  for (OutputDeviceList::const_iterator Out1
686  = list.begin();
687  Out1 != Out; Out1++)
688  (*Out1)->Close();
689 
690  return false;
691  }
692 
693  return true;
694  }
CommonTypedDeviceAPI< OutputDeviceClass >::listtype OutputDeviceList
Definition: Device.h:838
#define DEBUGLOG2(level,...)
Definition: debug.h:241
template<class I = InputDevice, class O = OutputDevice, class B = Box>
bool mutabor::TRouteClass< I, O, B >::OutputAvoidDrumChannel ( ) const
inline
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::OutputAvoidDrumChannel ( bool  avoid)
inline

Definiert in Zeile 383 der Datei Route.h.

383  {
384  ONoDrum = avoid;
385  }
mutabor::OutputDeviceClass::OutputDeviceClass ( )
inlineprotected

Definiert in Zeile 955 der Datei Device.h.

955  :CommonTypedDeviceAPI<OutputDeviceClass>(),
956  write_lock() {}
mutabor::OutputDeviceClass::OutputDeviceClass ( const std::string &  name,
int  id = -1 
)
inlineprotected

Definiert in Zeile 958 der Datei Device.h.

959  :
960  CommonTypedDeviceAPI<OutputDeviceClass>(name, id),
961  write_lock() {}
void mutabor::InputDeviceClass::outputs_handle_event ( event  e)
inlineprotected

Definiert in Zeile 1326 der Datei Device.h.

Benutzt mutabor::Device::routes.

1326  {
1327  OutputDeviceSet set;
1328  for (routeListType::iterator i=routes.begin();
1329  i != routes.end(); ++i) {
1330  OutputDevice o = (*i)->GetOutputDevice();
1331  if (o)
1332  set.insert(o);
1333  }
1334  for (OutputDeviceSet::iterator i = set.begin(); i != set.end(); ++i) {
1335  (*i) -> handle_event (e);
1336  }
1337 
1338  }
routeListType routes
Definition: Device.h:653
CommonTypedDeviceAPI< OutputDeviceClass >::DevicePtr OutputDevice
Definition: Device.h:836
std::set< OutputDevice > OutputDeviceSet
Definition: Device.h:839
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::Panic ( int  type)
inline

Definiert in Zeile 251 der Datei Route.h.

Wird benutzt von mutabor::TRouteClass< InputDevice, OutputDevice, Box >::Panic().

251  {
252  if (box)
253  box-> Panic(this,type);
254  if (Out)
255  Out -> Quiet(this, type);
256  }
void Panic(int type)
Definition: Route.h:251
OutputDevice Out
Definition: Route.h:463
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::Panic ( int  type,
size_t  unique_id 
)
inline

Definiert in Zeile 258 der Datei Route.h.

258  {
259  if (box)
260  box-> Panic(this, type, unique_id);
261  if (Out)
262  Out -> Quiet(this, type, unique_id);
263  }
void Panic(int type)
Definition: Route.h:251
OutputDevice Out
Definition: Route.h:463
void mutabor::BoxClass::Panic ( int  type)
virtual

reset the device if requested

Definiert in Zeile 375 der Datei Box.cpp.

Benutzt mutabor::hidden::mutabor_reset_keys() und mutASSERT.

375  {
376  BoxLock lock(this);
377  mutASSERT(open);
379  }
#define mutASSERT(expr)
struct mutabor_box_type * box
Definition: Box.h:810
void mutabor_reset_keys(struct mutabor_box_type *box)
Definition: box.cpp:79
void mutabor::BoxClass::Panic ( Route  r,
int  type 
)
virtual

Definiert in Zeile 348 der Datei Box.cpp.

Benutzt mutabor::hidden::mutabor_note_type::channel, DEBUGLOG, mutabor::hidden::mutabor_note_type::id, mutabor::hidden::mutabor_find_key_in_box(), mutASSERT, mutabor::hidden::mutabor_note_type::next und mutabor::hidden::mutabor_note_type::number.

349  {
350  BoxLock lock(this);
351 #ifdef DEBUG
352  size_t channel = r -> get_session_id();
353  mutabor_note_type * key;
354  size_t index = 0;
355  while ((key = hidden::mutabor_find_key_in_box(box,
356  index))
357  != NULL) {
358  if (key -> channel == channel)
359  break;
360  index = key->next;
361  }
362 
363  if (key != NULL) {
364  DEBUGLOG (routing, "(key = %d, channel = %lu, id = %lu)" ,
365  key->number,
366  key->channel,
367  key->id);
368 
369  }
370  mutASSERT(key == NULL);
371 #endif
372 
373  }
#define DEBUGLOG(level,...)
Definition: debug.h:240
#define mutASSERT(expr)
mutabor_note_type * mutabor_find_key_in_box(mutabor_box_type *box, size_t index)
Definition: box.h:181
struct mutabor_box_type * box
Definition: Box.h:810
size_t get_session_id() const
Definition: Box.h:241
void mutabor::BoxClass::Panic ( Route  r,
int  type,
size_t  unique_id 
)
virtual

Definiert in Zeile 327 der Datei Box.cpp.

Benutzt mutabor::hidden::mutabor_find_key_in_box(), mutASSERT und mutabor::hidden::mutabor_note_type::next.

328  {
329  BoxLock lock(this);
330 #ifdef DEBUG
331  size_t channel = r -> get_session_id();
332  mutabor_note_type * key;
333  size_t index = 0;
334  while ((key = hidden::mutabor_find_key_in_box(box,
335  index))
336  != NULL) {
337  if (key -> channel == channel
338  && key -> id == unique_id)
339  break;
340  index = key->next;
341  }
342 
343  mutASSERT(key == NULL);
344 #endif
345 
346  }
#define mutASSERT(expr)
mutabor_note_type * mutabor_find_key_in_box(mutabor_box_type *box, size_t index)
Definition: box.h:181
struct mutabor_box_type * box
Definition: Box.h:810
size_t get_session_id() const
Definition: Box.h:241
virtual void mutabor::Device::Panic ( int  type)
pure virtual

reset the device if requested

Implementiert in mutabor::InputDeviceClass und mutabor::OutputDeviceClass.

void mutabor::OutputDeviceClass::Panic ( int  type)
inlinevirtual

reset the device if requested

Implementiert mutabor::Device.

Definiert in Zeile 925 der Datei Device.h.

Benutzt mutabor::OutputDeviceClass::do_Panic() und mutabor::OutputDeviceClass::write_lock.

925  {
926  ScopedLock lock(write_lock);
927  do_Panic(type);
928  };
wxMutexLocker ScopedLock
Definition: thread.h:57
virtual void do_Panic(int type)
Definition: Device.h:1001
void mutabor::Panic ( int  type)

Definiert in Zeile 1042 der Datei Box.cpp.

Benutzt mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList() und mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList().

Wird benutzt von mutabor::InputMidiPort::Close(), mutaborGUI::MutFrame::CmPanic(), mutabor::CommonMidiInput< D >::ProceedRoute() und CommonMidiInputTest::testGlobalPanic().

1042  {
1043  dopanic_type dopanic(type);
1044 
1045  const InputDeviceList & inlist = InputDeviceClass::GetDeviceList();
1046  std::for_each(inlist.begin(),inlist.end(),dopanic);
1047 
1048  const BoxListType & boxlist = BoxClass::GetBoxList();
1049  std::for_each(boxlist.begin(),boxlist.end(),dopanic);
1050 
1051  const OutputDeviceList & outlist = OutputDeviceClass::GetDeviceList();
1052  std::for_each(outlist.begin(),outlist.end(),dopanic);
1053  }
CommonTypedDeviceAPI< OutputDeviceClass >::listtype OutputDeviceList
Definition: Device.h:838
std::vector< Box > BoxListType
Definition: Box.h:123
CommonTypedDeviceAPI< InputDeviceClass >::listtype InputDeviceList
Definition: Device.h:1011
void mutabor::InputDeviceClass::Panic ( int  type)
virtual

reset the device if requested

Implementiert mutabor::Device.

Definiert in Zeile 433 der Datei Device.cpp.

Benutzt mutabor::InputDeviceClass::DoSilenceKeys(), mutabor::Device::routes und mutabor::InputDeviceClass::write_lock.

Wird benutzt von mutabor::InputGis::Stop(), mutabor::InputMidiPort::Stop(), mutabor::InputDeviceClass::Stop(), CommonMidiInputTest::testPanic() und mutabor::CommonFileInputDevice::ThreadPlay().

433  {
434  ScopedLock lock(write_lock);
435  DoSilenceKeys(true);
436 
437  for (routeListType::iterator j = routes.begin(); j!= routes.end(); j++) {
438  (*j)->Panic(type);
439  }
440  }
routeListType routes
Definition: Device.h:653
wxMutexLocker ScopedLock
Definition: thread.h:57
void DoSilenceKeys(bool remove)
Definition: Device.cpp:353
void mutabor::InputDeviceClass::Panic ( int  type,
size_t  unique_id 
)

Definiert in Zeile 402 der Datei Device.cpp.

Benutzt mutabor::InputDeviceClass::current_keys_type::add(), mutabor::InputDeviceClass::current_keys_type::begin(), mutabor::midi::CONTROLLER_OFF, mutabor::InputDeviceClass::current_keys, mutabor::InputDeviceClass::DoNoteOff(), mutabor::InputDeviceClass::current_keys_type::end(), mutabor::midi::get_holds(), mutabor::InputDeviceClass::current_keys_type::remove(), mutabor::Device::routes und mutabor::InputDeviceClass::write_lock.

403  {
404  ScopedLock lock(write_lock);
405 
406  current_keys_type tmp;
408 
409  for (i = current_keys.begin();i!= current_keys.end();i++) {
410  if (i->unique_id != unique_id) continue;
411  tmp.add(*i);
412  }
413  while ((i = tmp.begin())!= tmp.end()) {
414  for (const int * j = midi::get_holds();
415  *j >= 0; j++) {
416  i->route->Controller(*j,
418  i->unique_id);
419  }
420  // Maps have constant entries
421  DoNoteOff(const_cast<Route &>(i->route),
422  i->key,i->velocity,i->unique_id);
423  tmp.remove(i);
424  }
425 
426  InputDevice self = this;
427  for (routeListType::iterator j = routes.begin(); j!= routes.end(); j++) {
428  (*j)->Panic(type,unique_id);
429 
430  }
431  }
routeListType routes
Definition: Device.h:653
wxMutexLocker ScopedLock
Definition: thread.h:57
void DoNoteOff(Route &R, int key, int velocity, size_t make_unique)
Definition: Device.h:1286
current_keys_type current_keys
Definition: Device.h:1314
virtual void Panic(int type)=0
reset the device if requested
CommonTypedDeviceAPI< InputDeviceClass >::DevicePtr InputDevice
Definition: Device.h:1009
const int * get_holds()
Return a list of hold controllers.
Definition: MidiKern.h:422
virtual void mutabor::Device::Pause ( )
inlinevirtual

Pause playback or recording of the device.

Erneute Implementation in mutabor::InputDeviceClass, mutabor::InputMidiPort, mutabor::CommonFileInputDevice, myDevice, myDevice, myDevice, myDevice und testCommonFileDeviceTimer.

Definiert in Zeile 568 der Datei Device.h.

568 {}
virtual void mutabor::InputDeviceClass::Pause ( )
inlinevirtual

Pause playback or recording of the device.

Erneute Implementation von mutabor::Device.

Erneute Implementation in mutabor::InputMidiPort, mutabor::CommonFileInputDevice, myDevice, myDevice, myDevice, myDevice und testCommonFileDeviceTimer.

Definiert in Zeile 1199 der Datei Device.h.

Benutzt mutabor::DevicePause und mutabor::Device::Mode.

1199  {
1200  Mode = DevicePause;
1201  }
enum MutaborModeType Mode
Definition: Device.h:652
static void mutabor::InputDeviceClass::PauseAll ( )
inlinestatic

Pause all input devices.

Definiert in Zeile 1168 der Datei Device.h.

Benutzt mutabor::CommonTypedDeviceAPI< InputDeviceClass >::deviceList und mutabor::InputDeviceClass::last_was_stop.

Wird benutzt von mutabor::InputMidiPort::Proceed().

1168  {
1169  for (listtype::iterator i = deviceList.begin();
1170  i != deviceList.end(); ++i) {
1171  (*i)->Pause();
1172  }
1173  last_was_stop = false;
1174  }
static bool last_was_stop
Definition: Device.h:1316
virtual void mutabor::Device::Play ( )
inlinevirtual

Start playback or recording of the device.

Erneute Implementation in mutabor::InputDeviceClass, mutabor::CommonFileInputDevice, myDevice, myDevice, myDevice, myDevice, testCommonFileDeviceTimer und testCommonFileDeviceTimer.

Definiert in Zeile 561 der Datei Device.h.

561 {}
virtual void mutabor::InputDeviceClass::Play ( )
inlinevirtual

Command the device to play music.

This function starts playing the music of the device at the curren position.

Erneute Implementation von mutabor::Device.

Erneute Implementation in mutabor::CommonFileInputDevice, myDevice, myDevice, myDevice, myDevice, testCommonFileDeviceTimer und testCommonFileDeviceTimer.

Definiert in Zeile 1134 der Datei Device.h.

Benutzt mutabor::DevicePause, mutabor::DevicePlay, mutabor::DeviceStop und mutabor::Device::Mode.

1134  {
1135  if (Mode == DeviceStop || Mode == DevicePause)
1136  Mode = DevicePlay;
1137  }
enum MutaborModeType Mode
Definition: Device.h:652
virtual mutint64 mutabor::InputDeviceClass::PrepareNextEvent ( )
inlinevirtual

Go on to the next event.

This function must be provided by the device. It is asked to prepare the next event and return the time to wait in microseconds from the start of the piece. Though the timer has only milliseconds resolution, the errors will sum up so that we need a much higher resolution, here.

Here, we use the measure that is used in the SMF standard. It has been designed to reduce the deviation of a 4 minutes piece at 120 bpm to 500μs. If it were 500ms it would be unusable.

Rückgabe
uint_fast64_t Absolute temporal position of the next event in the piece in μs.

Erneute Implementation in mutabor::InputMidiFile, mutabor::InputGis, testCommonFileDeviceTimer und testCommonFileDeviceTimer.

Definiert in Zeile 1229 der Datei Device.h.

Benutzt MUTABOR_NO_DELTA.

Wird benutzt von mutabor::CommonFileInputDevice::ThreadPlay().

1229 { return MUTABOR_NO_DELTA; }
#define MUTABOR_NO_DELTA
Definition: timing.h:62
int GisWriteHead::ProceedGis ( GisToken token,
char  turn = 0 
)

cout << "[" << Id << "," << (int)turn << "]"; token->Echo();

cout << " ";

Definiert in Zeile 1245 der Datei GIS_Head.cpp.

Benutzt AddTag(), GisToken::Copy(), TagListData::Data, EndTag(), GTComma, GTNote, GTNull, GTParaInt, GTParaReal, GTParaStr, GTSegment, GTSequenz, GTTag, GTTagBegin, GTTagEnd, GTUnknown, TagListData::data::i, GisToken::Sep, ChordNote::SetNoteOn(), TTkey, TToct, GisToken::Type(), WTAG und WTAGEND.

Wird benutzt von GisWriteHeadGis().

1246 {
1249  int Res = 0;
1250  int Id;
1251 
1252  if ( turn == 1 ) return 0;
1253 
1254  CommaAtEnd = 0;
1255 
1256  if ( !turn ) // this token first time
1257  {
1258  Res = CloseCurrentToken(); // close the current Token
1259 
1260  if ( Res ) return Res;
1261 
1262  switch ( token->Type() )
1263  {
1264 
1265  case GTNull:
1266  return 3; // impossible
1267 
1268  case GTUnknown:
1269  *Cursor = new GisToken(token->Sep);
1270 
1271  Cursor = &((*Cursor)->Next);
1272 
1273  break;
1274 
1275  case GTSequenz:
1276  *Cursor = new GisSequenz(0, token->Sep);
1277 
1278  ((GisSequenz*)*Cursor)->Sep2 = ((GisSequenz*)token)->Sep2;
1279 
1280  break;
1281 
1282  case GTSegment:
1283  *Cursor = new GisSegment(0, token->Sep);
1284 
1285  ((GisSegment*)*Cursor)->Sep2 = ((GisSegment*)token)->Sep2;
1286 
1287  break;
1288 
1289  case GTTag:
1290 
1291  case GTTagBegin:
1292  /* if ( token->Type() == GTTag )
1293  *Cursor = new GisTag(((GisTag*)token)->Name, ((GisTag*)token)->Para,
1294  token->Sep);
1295  else
1296  *Cursor = new GisTagBegin(((GisTag*)token)->Name, ((GisTag*)token)->Para,
1297  token->Sep); */
1298  *Cursor = token->Copy();
1299 
1300  Id = WTAG->Id;
1301 
1302  if ( Id == TToct ) {
1303  if ( WTAG->GetParaType(1) == GTParaInt )
1304  AddTag(&Octave, WTAG)->Data.i = ((GisParaInt*)WTAG->GetPara(1))->i;
1305  } else if ( Id == TTkey ) {
1306  if ( WTAG->GetParaType(1) == GTParaInt )
1307  AddTag(&Key, WTAG)->Data.i = ((GisParaInt*)WTAG->GetPara(1))->i;
1308  }
1309 
1310  Cursor = &((*Cursor)->Next);
1311 
1312  break;
1313 
1314  case GTTagEnd:
1315  *Cursor = new GisTagEnd(0, token->Sep);
1316 
1317  Cursor = &((*Cursor)->Next);
1318 
1319  if ( WTAGEND->Begin ) {
1320  Id = WTAGEND->Begin->Id;
1321 
1322  if ( Id == TToct )
1323  EndTag(&Octave, WTAGEND);
1324  else if ( Id == TTkey )
1325  EndTag(&Key, WTAGEND);
1326  }
1327 
1328  break;
1329 
1330  case GTParaInt:
1331 
1332  case GTParaReal:
1333 
1334  case GTParaStr:
1335  return 4;
1336 
1337  case GTComma:
1338  *Cursor = new GisComma(token->Sep);
1339 
1340  Cursor = &((*Cursor)->Next);
1341 
1342  CommaAtEnd = 1;
1343 
1344  break;
1345 
1346  case GTNote:
1347  ChordNote *ANote = GetFreeNote();
1348 
1349  if ( ANote )
1350  ANote->SetNoteOn(token);
1351  else
1352  return 1;
1353 
1354  break;
1355  }
1356  }
1357  else // second call
1358  {
1359  if ( State() != token->Type() && token->Type() != GTNote) return 2;
1360 
1361  if ( token->Type() != GTNote )
1362  Res = CloseCurrentToken();
1363  else {
1364  if ( ChordNotes ) {
1365  Res = !ChordNotes->SetNoteOff(token);
1366  }
1367 
1368  if ( !NoteOn ) // write the Chord
1369  WriteChord();
1370  }
1371  }
1372 
1373  return Res;
1374 }
Definition: GIS.h:107
ChordNote * ChordNotes
Definition: GIS_Head.h:324
TagList * Octave
Definition: GIS_Head.h:327
void SetNoteOn(GisToken *note)
Definition: GIS_Head.cpp:826
Definition: GIS.h:103
Definition: GIS.h:104
Definition: GIS.h:100
char CommaAtEnd
Definition: GIS_Head.h:326
virtual GisToken * Copy()
Definition: GIS.h:141
Definition: GIS.h:106
Definition: GIS.h:116
TagList * EndTag(TagList **list, GisTagEnd *tagEnd)
Definition: GIS_Head.cpp:489
ChordNote * GetFreeNote()
Definition: GIS_Head.cpp:1030
char NoteOn
Definition: GIS_Head.h:325
Definition: GIS.h:111
Definition: GIS.h:101
GisType State()
Definition: GIS_Head.h:369
Definition: GIS.h:108
union TagListData::data Data
void WriteChord()
Definition: GIS_Head.cpp:1376
Definition: GIS.h:599
GisToken ** Cursor
Definition: GIS_Head.h:319
Definition: GIS.h:387
#define TToct
Definition: GIS.h:83
std::string Sep
Definition: GIS.h:121
virtual GisType Type() const
Definition: GIS.h:136
int CloseCurrentToken(char insertRest=1)
Definition: GIS_Head.cpp:1172
TagList * Key
Definition: GIS_Head.h:328
#define WTAG
Definition: GIS_Head.cpp:1242
Definition: GIS.h:102
std::string Id
Definition: GIS_Head.h:321
#define TTkey
Definition: GIS.h:82
#define WTAGEND
Definition: GIS_Head.cpp:1243
Definition: GIS.h:110
TagList * AddTag(TagList **list, GisTag *tag)
Definition: GIS_Head.cpp:473
int SetNoteOff(GisToken *note)
Definition: GIS_Head.cpp:834
void mutabor::ChannelData::program_change ( int  program)
inline

Definiert in Zeile 443 der Datei Device.h.

Benutzt mutabor::midi::BANK_COARSE, mutabor::ChannelData::bank_coarse, mutabor::midi::BANK_FINE, mutabor::ChannelData::bank_fine, mutabor::ChannelData::controller und mutabor::ChannelData::Sound.

Wird benutzt von mutabor::CommonMidiOutput< T, D >::CopyProgramChange() und mutabor::InputGis::Proceed().

443  {
444  Sound = program;
445  int8_t data = controller[midi::BANK_COARSE];
446  if (data != -1) {
447  bank_coarse = data;
449  }
450 
451  data = controller[midi::BANK_FINE];
452  if (data != -1) {
453  bank_fine = data;
455  }
456  }
controller_vector controller
Definition: Device.h:491
uint8_t bank_fine
Definition: Device.h:498
uint8_t bank_coarse
Definition: Device.h:497
void mutabor::ChannelData::program_change ( const ChannelData o)
inline
void mutabor::OutputDeviceClass::Quiet ( Route  r,
int  type 
)
inline

Definiert in Zeile 916 der Datei Device.h.

Benutzt mutabor::OutputDeviceClass::do_Quiet() und mutabor::OutputDeviceClass::write_lock.

916  {
917  ScopedLock lock(write_lock);
918  do_Quiet(r,type);
919  }
wxMutexLocker ScopedLock
Definition: thread.h:57
virtual void do_Quiet(Route r, int type)=0
void mutabor::OutputDeviceClass::Quiet ( Route  r,
int  type,
size_t  id 
)
inline

Definiert in Zeile 920 der Datei Device.h.

Benutzt mutabor::OutputDeviceClass::do_Quiet() und mutabor::OutputDeviceClass::write_lock.

920  {
921  ScopedLock lock(write_lock);
922  do_Quiet(r,type,id);
923  }
wxMutexLocker ScopedLock
Definition: thread.h:57
virtual void do_Quiet(Route r, int type)=0
void GisReadHead::Read ( )

Definiert in Zeile 315 der Datei GIS_Head.cpp.

Benutzt DEBUGLOG, GTComma, GTNote, GTNull, GTParaInt, GTParaReal, GTParaStr, GTSegment, GTSequenz, GTTag, GTTagBegin, GTTagEnd und GTUnknown.

Wird benutzt von GisReadHeadOn().

316 {
317  DEBUGLOG (gmnfile, "Cursor: %p" , (void*)Cursor);
318 
319  if ( !Cursor ) return;
320 
321  switch ( Cursor->Type() ) {
322 
323  case GTSegment:
325 
326  break;
327 
328  case GTSequenz:
330 
331  break;
332 
333  case GTNote:
334  DEBUGLOG (gmnfile, "Setting time" );
335 
336  Time = ((GisNote*)Cursor)->Duration;
337 
338  break;
339  case GTNull:case GTUnknown:case GTTag:case GTTagBegin:case GTTagEnd:
340  case GTParaInt:case GTParaReal:case GTParaStr:case GTComma:
341  ;
342 
343  }
344 
345  // the other tokens dont influenz the way of reading
346 }
GisToken * Cursor
Definition: GIS_Head.h:71
Definition: GIS.h:107
#define DEBUGLOG(level,...)
Definition: debug.h:240
Definition: GIS.h:103
Definition: GIS.h:104
Definition: GIS.h:100
Definition: GIS.h:106
mutabor::frac Time
Definition: GIS_Head.h:72
Definition: GIS.h:111
void CreateSegmentSubs()
Definition: GIS_Head.cpp:263
Definition: GIS.h:101
Definition: GIS.h:108
virtual GisType Type() const
Definition: GIS.h:136
Definition: GIS.h:423
void CreateSequenzSubs()
Definition: GIS_Head.cpp:300
Definition: GIS.h:102
Definition: GIS.h:110
void GisReadArtHead::Read ( )

Definiert in Zeile 509 der Datei GIS_Head.cpp.

Benutzt AddTag(), ARStaccatto, ARTenuto, ArticulationHold, TagListData::data::ch, TagListData::Data, DEBUGLOG, EndTag(), GetMidiInstrument(), GetReal(), GetTheSpeedFactor(), GTComma, GTNote, GTNull, GTParaInt, GTParaReal, GTParaStr, GTSegment, GTSequenz, GTTag, GTTagBegin, GTTagEnd, GTUnknown, TagListData::data::i, TAG, TAGEND, TTaccent, TTalter, TTinstr, TTintens, TToct, TTstacc, TTtempo und TTten.

Wird benutzt von GisReadArtHeadOn(), IMPLEMENT_APP() und mutabor::InputGis::ReadOn().

510 {
511  int Id = 0;
512  DEBUGLOG (gmnfile, "Id: %d; Cursor: %p" , Id, (void*) Cursor);
513 
514  if ( !Cursor ) return;
515 
516  Turn = 3;
517 
518  DEBUGLOG (gmnfile, "Cursor->Type %d" , Cursor->Type());
519 
520  switch ( Cursor->Type() ) {
521 
522  case GTSegment:
524 
525  Turn = 2;
526 
527  break;
528 
529  case GTSequenz:
531 
532  Turn = 2;
533 
534  break;
535 
536  case GTNote:
537  Time2 = ((GisNote*)Cursor)->Duration;
538 
540 
541  DEBUGLOG (gmnfile, "GTNote: Time: %ld/%ld; Time2: %ld/%ld (=Cursor->Duration)" ,
543 
544  Time2 -= Time;
545 
546  DEBUGLOG (gmnfile, "Time: %ld/%ld; Time2: %ld/%ld" ,
547  Time.numerator(),Time.denominator(),Time2.numerator(),Time2.denominator());
548 
549  Turn = 1;
550 
551  break;
552 
553  case GTTag:
554 
555  case GTTagBegin:
556  Id = TAG->Id;
557 
558  if ( Id == TTintens ) {
559  if ( TAG->GetParaType(2) == GTParaInt || TAG->GetParaType(2) == GTParaReal)
560  AddTag(&Intensity, TAG)->Data.ch = (char) (GetReal(TAG->GetPara(2)) * 127);
561  } else if ( Id == TTaccent ) {
562  AddTag(&Intensity, TAG)->Data.ch = 120; // ??? what value
563  } else if ( Id == TTstacc ) {
565  } else if ( Id == TTten ) {
567  } else if ( Id == TToct ) {
568  if ( TAG->GetParaType(1) == GTParaInt )
569  AddTag(&Octave, TAG)->Data.i = ((GisParaInt*)TAG->GetPara(1))->i;
570  } else if ( Id == TTalter ) {
571  if ( TAG->GetParaType(1) != GTParaStr )
572  AddTag(&Alter, TAG)->Data.i = (int) (GetReal(TAG->GetPara(1)) * 0x1FFF) ;
573  } else if ( Id == TTinstr ) {
574  if ( TAG->GetParaType(2) == GTParaStr )
575  AddTag(&Instr, TAG)->Data.ch = GetMidiInstrument(TAG->GetPara(2));
576  } else if ( Id == TTtempo ) {
577  if ( TAG->GetParaType(2) == GTParaStr ) {
578  long int speed =
579  (AddTag(&Tempo, TAG)->Data.i =
580  GetTheSpeedFactor(TAG->GetPara(2)));
581  DEBUGLOG (gmnfile, "Got speed factor %ld" ,speed);
582  }
583  }
584 
585  break;
586 
587  case GTTagEnd:
588  DEBUGLOG (gmnfile, "Ended tag." );
589 
590  if ( !TAGEND->Begin )
591  break;
592 
593  DEBUGLOG (gmnfile, "Tag Id was %d." ,TAGEND->Begin->Id);
594 
595  Id = TAGEND->Begin->Id;
596 
597  if ( Id == TTintens || Id == TTaccent )
599  else if ( Id == TTstacc || Id == TTten )
601  else if ( Id == TToct )
602  EndTag(&Octave, TAGEND);
603  else if ( Id == TTalter )
604  EndTag(&Alter, TAGEND);
605  else if ( Id == TTinstr )
606  EndTag(&Instr, TAGEND);
607  else if ( Id == TTtempo )
608  EndTag(&Tempo, TAGEND);
609  case GTNull:case GTUnknown:
610  case GTParaInt:case GTParaReal:case GTParaStr:case GTComma:
611  ;
612 
613 
614  }
615 
616  // the other tokens don't influenz the way of reading
617 }
GisToken * Cursor
Definition: GIS_Head.h:71
Definition: GIS.h:107
TagList * Instr
Definition: GIS_Head.h:174
#define TTalter
Definition: GIS.h:84
#define DEBUGLOG(level,...)
Definition: debug.h:240
mutint64 GetTheSpeedFactor(GisToken *token)
This function returns the speed factor that must be multiplied to the duration value in order to get ...
Definition: GIS_Head.cpp:96
Definition: GIS.h:103
Definition: GIS.h:104
Definition: GIS.h:100
#define TAG
Definition: GIS_Head.cpp:506
TagList * Alter
Definition: GIS_Head.h:173
Definition: GIS.h:106
TagList * EndTag(TagList **list, GisTagEnd *tagEnd)
Definition: GIS_Head.cpp:489
double GetReal(GisToken *token)
Definition: GIS_Head.cpp:45
char ArticulationHold[5]
Definition: GIS_Head.cpp:39
TagList * Intensity
Definition: GIS_Head.h:170
TagList * Tempo
Definition: GIS_Head.h:175
mutabor::frac Time2
Definition: GIS_Head.h:165
#define TTten
Definition: GIS.h:81
mutint64 numerator() const
Definition: Frac.h:84
mutabor::frac Time
Definition: GIS_Head.h:72
#define TTtempo
Definition: GIS.h:76
Definition: GIS.h:111
void CreateSegmentSubs()
Definition: GIS_Head.cpp:263
Definition: GIS.h:101
Definition: GIS.h:108
union TagListData::data Data
char Turn
Definition: GIS_Head.h:74
#define TTinstr
Definition: GIS.h:77
#define TTaccent
Definition: GIS.h:80
TagList * Octave
Definition: GIS_Head.h:172
char GetMidiInstrument(GisToken *token)
Definition: GIS_Head.cpp:55
#define TToct
Definition: GIS.h:83
#define TTintens
Definition: GIS.h:74
#define TTstacc
Definition: GIS.h:79
virtual GisType Type() const
Definition: GIS.h:136
Definition: GIS.h:423
TagList * Articulation
Definition: GIS_Head.h:171
std::string Id
Definition: GIS_Head.h:73
ARType GetArticulation()
Definition: GIS_Head.h:230
mutint64 denominator() const
Definition: Frac.h:86
void CreateSequenzSubs()
Definition: GIS_Head.cpp:300
Definition: GIS.h:102
Definition: GIS.h:110
#define TAGEND
Definition: GIS_Head.cpp:507
TagList * AddTag(TagList **list, GisTag *tag)
Definition: GIS_Head.cpp:473
long ReadLong ( int  SignAllowed)

Definiert in Zeile 282 der Datei GSP.cpp.

Benutzt CHAR0, CurrentLine, CurrentPos, DEBUGLOG2, GetSep(), minus, NumberLength und Sep.

Wird benutzt von ReadNote() und ReadParaNumber().

283 {
284  long a = 0;
285  NumberLength = 0;
286  minus = false;
287 
288  if ( SignAllowed ) {
289  DEBUGLOG2(other,("Sign char %c?"), CHAR0);
290 
291  if ( CHAR0 == ('+') ) CurrentPos++;
292  else if ( CHAR0 == ('-') ) {
293  CurrentPos++;
294  minus = true;
295  }
296  }
297 
298  GetSep();
299 
300  while ( isdigit(CHAR0) && Sep.empty() ) {
301  DEBUGLOG2(other,("Number char %c? (a=%ld)"), CHAR0, a);
302  a = a*10 + (CurrentLine[CurrentPos++]-('0'));
303  NumberLength++;
304  GetSep();
305  }
306 
307  if ( minus ) return -a;
308 
309  return a;
310 }
#define CHAR0
Definition: GSP.cpp:179
int NumberLength
Definition: GSP.cpp:55
std::string Sep
Definition: GSP.cpp:39
bool minus
Definition: GSP.cpp:279
std::string CurrentLine
Definition: GSP_File.cpp:36
size_t CurrentPos
Definition: GSP_File.cpp:37
#define DEBUGLOG2(level,...)
Definition: debug.h:241
int GetSep()
Definition: GSP.cpp:192
int ReadNewLine ( )

Definiert in Zeile 83 der Datei GSP_File.cpp.

Benutzt bad, CurrentLine, CurrentPos, Eof, File und GspCurrentLineNr.

Wird benutzt von GetSep() und ReadParaStr().

84 {
85  CurrentPos = 0;
86  if (!File) return -1;
87 
88  if ( (Eof = File->eof()) || (bad = File->bad()) ) {
89  CurrentLine = "";
90  return bad;
91  }
92 
93  std::getline(*File, CurrentLine);
94 
96 
97  return bad = File->bad();
98 #if 0
99 
100  if ( (Eof = mutStreamEOF(*File)) || mutStreamBad(*File) ) {
101  CurrentLine[0] = 0;
102  return mutStreamBad(*File);
103  }
104 
105  File->getline(CurrentLine, GSP_MAX_LINE);
106 
108  return mutStreamBad(*File);
109 #endif
110 }
int Eof
Definition: GSP_File.cpp:38
boost::filesystem::ifstream * File
Definition: GSP_File.cpp:40
std::string CurrentLine
Definition: GSP_File.cpp:36
size_t CurrentPos
Definition: GSP_File.cpp:37
static int bad
Definition: GSP_File.cpp:43
int GspCurrentLineNr
Definition: GSP.cpp:28
int ReadNote ( )

Definiert in Zeile 418 der Datei GSP.cpp.

Benutzt accedentials, CHAR0, CharIn(), CheckError(), CurrentLine, CurrentPos, DEBUGLOG2, DoError(), duration, GetSep(), IsLetter(), Note(), octave, ReadLong() und SepPos.

Wird benutzt von DoParse().

419 {
420  int i = 0;
421  std::string Name = "";
422  accedentials = "";
423 #if 0
424  mutChar Name[GSP_MAX_LINE] = ("");
425  accedentials[0] = 0;
426 #endif
427 
428  GetSep();
429 
430 
431  for (i = CurrentPos; IsLetter(CHAR0) && !SepPos; CurrentPos++)
432  GetSep();
433 
434  Name = CurrentLine.substr(i,CurrentPos-i);
435 
436  GetSep();
437 
438 #if 0
439  while ( IsLetter(CHAR0) && !SepPos ) {
440  Name[i++] = CurrentLine[CurrentPos++];
441  GetSep();
442  std::string Name /* [GSP_MAX_LINE]*/ = ("");
443 
444  }
445 
446  Name[i] = 0;
447 
448 #endif
449 
450  DEBUGLOG2(other,("SepPos: %d"),(int)SepPos);
451 
452  if ( SepPos )
453  return CheckError(Note(Name, accedentials, octave, duration));
454 
455  i = 0; // accedentials
456 
457  while ( CharIn(CHAR0, "#&") && !SepPos ) {
459 #if 0
461 #endif
462  GetSep();
463  }
464 
465 #if 0
466  accedentials[i] = 0;
467 
468 #endif
469 
470  DEBUGLOG2(other,("SepPos: %d"),(int)SepPos);
471 
472  if ( SepPos )
473  return CheckError(Note(Name, accedentials, octave, duration));
474 
475  size_t cp = CurrentPos; // octave
476  int oct = ReadLong(1);
477  if ( cp != CurrentPos ) octave = oct;
478  if ( SepPos || !CharIn(CHAR0, "/*.") )
479  return CheckError(Note(Name, accedentials, octave, duration));
480 
481  int DurOk = 0; // duration
482  duration = frac(1,1);
483  if ( CHAR0 == ('*') ) {
484  DurOk = 1;
485  CurrentPos++;
486  duration = frac(ReadLong(0));
487 
488  if ( !duration )
489  return DoError(21); // error: nominator expected
490  }
491 
492  if ( SepPos || !CharIn(CHAR0, "/.") )
493  return CheckError(Note(Name, accedentials, octave, duration));
494 
495  if ( CHAR0 == '/' ) {
496  DurOk = 1;
497  CurrentPos++;
498  duration /= ReadLong(0);
499 
500  if ( !duration )
501  return DoError(22); // error: denominator expected
502  }
503 
504  if ( SepPos )
505  return CheckError(Note(Name, accedentials, octave, duration));
506 
507  if ( CHAR0 == '.' && !DurOk )
508  return DoError(23); // error: dotting wihtout duration
509 
510  frac add = duration;
511 
512  while ( CHAR0 == '.' && !SepPos ) {
513  add *= frac(1,2);
514  duration += add;
515  CurrentPos++;
516  GetSep();
517  }
518 
519  return CheckError(Note(Name, accedentials, octave, duration));
520 }
int IsLetter(char c)
Definition: GSP.cpp:96
#define CHAR0
Definition: GSP.cpp:179
int Note(const std::string &name, const std::string &accedentials, int octave, const mutabor::frac &duration)
Definition: GIS.cpp:700
static int octave
Definition: GSP.cpp:66
int CheckError(int nr)
Definition: GSP.cpp:157
std::string CurrentLine
Definition: GSP_File.cpp:36
size_t CurrentPos
Definition: GSP_File.cpp:37
#define DEBUGLOG2(level,...)
Definition: debug.h:241
int DoError(int nr, int pos=-1)
Definition: GSP.cpp:142
static frac duration
Definition: GSP.cpp:70
static std::string accedentials
Definition: GSP.cpp:68
int GetSep()
Definition: GSP.cpp:192
#define SepPos
Definition: GSP.cpp:46
long ReadLong(int SignAllowed)
Definition: GSP.cpp:282
int CharIn(char c, const char *s)
Definition: GSP.cpp:89
int ReadParaNumber ( )

Definiert in Zeile 313 der Datei GSP.cpp.

Benutzt CHAR0, CheckError(), CurrentPos, GetSep(), minus, NumberLength, ReadLong(), Sep, TagParaInt() und TagParaReal().

Wird benutzt von DoParse().

314 {
315  long a = ReadLong(1);
316  if ( !Sep.empty() || CHAR0 != ('.') ) // integer
317  return CheckError(TagParaInt(a));
318 
319  // real
320  CurrentPos++; // comma position
321  GetSep();
322  char minus1 = minus;
323  double r = (double)a;
324  if ( !Sep.empty() ) // real without fraction part
325  return CheckError(TagParaReal(r));
326 
327  float b = (double) ReadLong(0);
328  for (int i = 1; i <= NumberLength; i++)
329  b = b / 10;
330 
331  if ( minus1 ) b = -b;
332 
333  return CheckError(TagParaReal(r+b));
334 }
#define CHAR0
Definition: GSP.cpp:179
int NumberLength
Definition: GSP.cpp:55
std::string Sep
Definition: GSP.cpp:39
bool minus
Definition: GSP.cpp:279
int TagParaInt(long i)
Definition: GIS.cpp:741
int CheckError(int nr)
Definition: GSP.cpp:157
size_t CurrentPos
Definition: GSP_File.cpp:37
int GetSep()
Definition: GSP.cpp:192
int TagParaReal(double x)
Definition: GIS.cpp:756
long ReadLong(int SignAllowed)
Definition: GSP.cpp:282
int ReadParaStr ( )

Definiert in Zeile 337 der Datei GSP.cpp.

Benutzt CHAR0, CHAR1, CheckError(), CurrentLine, CurrentPos, Eof, GetSep(), NEW_LINE, ReadNewLine() und TagParaStr().

Wird benutzt von DoParse().

338 {
339  std::string s = "";
340 #if 0
341  mutChar s[GSP_MAX_LINE] = "";
342 #endif
343  CurrentPos++;
344 
345  while ( (CHAR0 != '"' || CHAR1 == '"') && !Eof ) {
346  // new Line
347  if ( !CHAR0 ) {
348  ReadNewLine();
349  s += NEW_LINE;
350  continue;
351  }
352  if ( CHAR0 == ('"') )
353  CurrentPos++;
354 
355  s += CurrentLine[CurrentPos++];
356 #if 0
357  s[i++] = CurrentLine[CurrentPos++];
358 
359 #endif
360  }
361 
362  if ( CHAR0 == ('"') ) CurrentPos++;
363 
364  s += (char)0;
365  GetSep();
366 
367  return CheckError(TagParaStr(s));
368 }
int Eof
Definition: GSP_File.cpp:38
int ReadNewLine()
Definition: GSP_File.cpp:83
#define CHAR0
Definition: GSP.cpp:179
int TagParaStr(const std::string &s)
Definition: GIS.cpp:771
#define NEW_LINE
Definition: GSP.cpp:72
int CheckError(int nr)
Definition: GSP.cpp:157
#define CHAR1
Definition: GSP.cpp:180
std::string CurrentLine
Definition: GSP_File.cpp:36
size_t CurrentPos
Definition: GSP_File.cpp:37
int GetSep()
Definition: GSP.cpp:192
int ReadTag ( )

Definiert in Zeile 371 der Datei GSP.cpp.

Benutzt BeginParameter(), CHAR0, CheckError(), CurrentLine, CurrentPos, EndParameter(), GetSep(), GspError, IsLetter(), LastTag, ParaMode, SepPos und Tag().

Wird benutzt von DoParse().

372 {
373  std::string Name = "";
374  int i = 0;
375  LastTag = 2; // to have an indicator, wether the last token was a tag
376  CurrentPos++;
377  GetSep();
378  i = CurrentPos;
379 
380  while ( IsLetter(CHAR0) && !SepPos ) {
381  CurrentPos++;
382 #if 0
383  Name[i++] = CurrentLine[CurrentPos++];
384 #endif
385  GetSep();
386  }
387 
388  Name = CurrentLine.substr (i,CurrentPos-i);
389 
390 #if 0
391  Name[i] = 0;
392 
393 #endif
394  if ( !GspError ) CheckError(Tag(Name));
395 
396  if ( CHAR0 == '<' ) {
397  CurrentPos++;
398  GetSep();
399 
401 
402  ParaMode = 1;
403  }
404 
405  if ( CHAR0 == '>' ) {
406  CurrentPos++;
407  GetSep();
408 
409  if ( !GspError ) CheckError(EndParameter());
410 
411  ParaMode = 0;
412  }
413 
414  return GspError;
415 }
int IsLetter(char c)
Definition: GSP.cpp:96
#define CHAR0
Definition: GSP.cpp:179
int GspError
Definition: GSP.cpp:32
int Tag(const std::string &tagName)
Definition: GIS.cpp:726
char ParaMode
Definition: GSP.cpp:53
int CheckError(int nr)
Definition: GSP.cpp:157
std::string CurrentLine
Definition: GSP_File.cpp:36
size_t CurrentPos
Definition: GSP_File.cpp:37
int BeginParameter()
Definition: GIS.cpp:619
int EndParameter()
Definition: GIS.cpp:626
char LastTag
Definition: GSP.cpp:63
int GetSep()
Definition: GSP.cpp:192
#define SepPos
Definition: GSP.cpp:46
int GisWriteHead::ReadyForBoss ( )

Definiert in Zeile 1070 der Datei GIS_Head.cpp.

Benutzt Comma(), GTNote, GTSequenz, GisToken::Next und GisToken::Type().

Wird benutzt von GisWriteHead::CloseSubs().

1071 {
1072  CloseCurrentToken(0); //+ zu hart: bei Unknown muß keine Note eingefügt werden (zumindest nur beim ersten
1073  // put in Sequenz, when single token mode
1074 #ifdef GMN_STRICT
1075 
1076  if ( SingleToken && Data && &Data->Next != Cursor && Data->Type() != GTSequenz ) {
1077  char isSingle = 2;
1078  GisToken *Token = Data, LastToken = 0;
1079 
1080  while ( 1 ) {
1081  if ( Token->Type() == GTNote )
1082  if ( isSingle ) isSingle--;
1083 
1084  if ( Token->Next )
1085  Token = Token->Next;
1086  else
1087  break;
1088  }
1089 
1090  if ( !isSingle ) {
1091  GisToken **Comma = 0;
1092 
1093  if ( CommaAtEnd ) // get right position
1094  {
1095  Comma = &Data;
1096  GisToken **Comma = &Data;
1097 
1098  while ( (*Comma)->Next )
1099  Comma = &((*Comma)->Next);
1100 
1101  *Comma = 0;
1102  }
1103  Data = new GisSequenz(Data, " ");
1104 
1105  Cursor = &Data->Next;
1106 
1107  if ( Comma ) {
1108  *Cursor = *Comma;
1109  Cursor = &(*Comma)->Next;
1110  }
1111  }
1112  }
1113 
1114 #endif
1115  return 0;
1116 }
Definition: GIS.h:107
char CommaAtEnd
Definition: GIS_Head.h:326
Definition: GIS.h:116
GisToken * Next
Definition: GIS.h:120
int Comma()
Definition: GIS.cpp:786
char SingleToken
Definition: GIS_Head.h:322
GisToken ** Cursor
Definition: GIS_Head.h:319
GisToken * Data
Definition: GIS_Head.h:319
virtual GisType Type() const
Definition: GIS.h:136
int CloseCurrentToken(char insertRest=1)
Definition: GIS_Head.cpp:1172
Definition: GIS.h:102
void mutabor::InputDeviceClass::RealtimePlay ( )
static

Play all input devices in realtime mode The the realtime mode allows interactive playing together with the integrated sequencer.

Definiert in Zeile 500 der Datei Device.cpp.

Benutzt mutabor::CommonTypedDeviceAPI< InputDeviceClass >::deviceList und mutabor::InputDeviceClass::last_was_stop.

Wird benutzt von mutabor::InputMidiPort::Proceed().

500  {
501  last_was_stop = false;
502  for (InputDeviceList::iterator i = deviceList.begin();
503  i != deviceList.end(); i++) {
504  (*i)->Play();
505  }
506  }
static bool last_was_stop
Definition: Device.h:1316
virtual void mutabor::BoxClass::CompileCallback::Refresh ( )
pure virtual
void mutabor::BoxClass::Register ( ChangedCallback callback)
inlineprotected

Definiert in Zeile 842 der Datei Box.h.

Benutzt mutabor::BoxClass::callbacks.

842  {
843  callbacks.push_back(callback);
844  }
std::list< ChangedCallback * > callbacks
Definition: Box.h:820
void mutabor::InputDeviceClass::current_keys_type::rehash ( size_t  n)
inline

Definiert in Zeile 1106 der Datei Device.h.

Benutzt mutabor::InputDeviceClass::current_keys_type::map.

Wird benutzt von midicmnInputDevice::midicmnInputDevice().

1106  {
1107  map.rehash(n);
1108  }
template<class I , class O , class B >
bool mutabor::TRouteClass< I, O, B >::Remove ( OutputDevice out)
virtual

remove an existing output device

Definiert in Zeile 185 der Datei Route.cpp.

Benutzt UNREACHABLEC.

185  {
186  if (out != Out) {
187  UNREACHABLEC;
188  return false;
189  }
190  Out.reset();
191  return true;
192  }
OutputDevice Out
Definition: Route.h:463
#define UNREACHABLEC
Definition: debug.h:256
template<class I = InputDevice, class O = OutputDevice, class B = Box>
virtual bool mutabor::TRouteClass< I, O, B >::Remove ( InputDevice in)
virtual

remove an existing input device

template<class I = InputDevice, class O = OutputDevice, class B = Box>
virtual bool mutabor::TRouteClass< I, O, B >::Remove ( Box b)
virtual

remov an existing box

bool mutabor::BoxClass::Remove ( Route route)
virtual

remove a route

Definiert in Zeile 151 der Datei Box.cpp.

Benutzt DEBUGLOG, intrusive_ptr_get_refcount() und mutASSERT.

151  {
152  BoxLock lock(this);
153  DEBUGLOG (smartptr, "Route: %p (%d)" ,
154  (void*)route.get(),
155  (int)intrusive_ptr_get_refcount(route.get()));
156  routeListType::iterator i =
157  std::find(routes.begin(),routes.end(),route);
158  bool found = (i != routes.end());
159  mutASSERT(found);
160  if (found) {
161  (*i).reset();// list can save some memory for reuse,
162  // but route must be deleted
163  routes.erase(i);
164  }
165  DEBUGLOG (smartptr, "Route; %p (%d)" ,(void*)route.get(),
166  (int)intrusive_ptr_get_refcount(route.get()));
167  return found;
168  }
#define DEBUGLOG(level,...)
Definition: debug.h:240
#define mutASSERT(expr)
size_t intrusive_ptr_get_refcount(intrusive_ptr_T *obj)
routeListType routes
Definition: Box.h:813
virtual bool mutabor::Device::Remove ( Route route)
pure virtual
template<class T , class P , class L >
bool mutabor::CommonTypedDeviceAPI< T, P, L >::Remove ( Route route)
virtual

remove a route

Implementiert mutabor::Device.

Definiert in Zeile 164 der Datei Device.cpp.

Benutzt DEBUGLOG, intrusive_ptr_get_refcount() und mutASSERT.

Wird benutzt von mutabor::CommonTypedDeviceAPI< T, P, L >::Replace().

164  {
165  DEBUGLOG (smartptr, "Route: %p (%d)" ,
166  (void*)route.get(),
167  (int)intrusive_ptr_get_refcount(route.get()));
168  routeListType::iterator i =
169  std::find(routes.begin(),routes.end(),route);
170  bool found = (i != routes.end());
171  mutASSERT(found);
172  if (found) {
173  (*i).reset();// list can save some memory for reuse,
174  // but route must be deleted
175  routes.erase(i);
176  }
177  DEBUGLOG (smartptr, "Route; %p (%d)" ,(void*)route.get(),
178  (int)intrusive_ptr_get_refcount(route.get()));
179  return found;
180  }
#define DEBUGLOG(level,...)
Definition: debug.h:240
routeListType routes
Definition: Device.h:653
#define mutASSERT(expr)
size_t intrusive_ptr_get_refcount(intrusive_ptr_T *obj)
void mutabor::InputDeviceClass::current_keys_type::remove ( int  key,
int  velocity,
int  unique_id,
Route R 
)
inline

Definiert in Zeile 1083 der Datei Device.h.

Benutzt DEBUGLOG und mutabor::InputDeviceClass::current_keys_type::map.

Wird benutzt von mutabor::InputDeviceClass::DoNoteOff() und mutabor::InputDeviceClass::Panic().

1086  {
1087  std::pair<map_type::iterator, map_type::iterator> range =
1088  map.equal_range(entry(key,unique_id,velocity, R, NULL, NULL, NULL));
1089  if (range.first != map.end()) {
1090  map.erase(range.first);
1091  DEBUGLOG(routing,("(key = %d, channel = %lu, id = %lu)"),
1092  key,
1093  (unsigned long)R->get_session_id(),
1094  (unsigned long)unique_id);
1095  }
1096  }
#define DEBUGLOG(level,...)
Definition: debug.h:240
void mutabor::InputDeviceClass::current_keys_type::remove ( iterator  i)
inline

Definiert in Zeile 1098 der Datei Device.h.

Benutzt mutabor::InputDeviceClass::current_keys_type::map.

1098  {
1099  map.erase(i);
1100  }
template<class T >
void mutabor::BoxClass::remove_watchdog ( dog)
inline

Definiert in Zeile 775 der Datei Box.h.

Benutzt mutabor::BoxClass::loopguard und mutASSERT.

775  {
776  mutASSERT(dog == loopguard);
777  loopguard = NULL;
778  }
watchdog< Box > * loopguard
Definition: Box.h:838
#define mutASSERT(expr)
void GisWriteHead::RemoveComma ( )

Definiert in Zeile 1118 der Datei GIS_Head.cpp.

Benutzt GisToken::Next.

Wird benutzt von CloseAllSubs() und GisWriteHead::CloseSubs().

1119 {
1120  if ( CommaAtEnd ) {
1121  GisToken **H = &Data;
1122 
1123  while ( &(*H)->Next != Cursor )
1124  H = &(*H)->Next;
1125 
1126  GisToken *SaveNext = (*H)->Next;
1127 
1128  delete *H;
1129 
1130  *H = SaveNext;
1131 
1132  Cursor = H;
1133  }
1134 }
char CommaAtEnd
Definition: GIS_Head.h:326
Definition: GIS.h:116
GisToken * Next
Definition: GIS.h:120
GisToken ** Cursor
Definition: GIS_Head.h:319
GisToken * Data
Definition: GIS_Head.h:319
void mutabor::BoxClass::RemoveFromBoxList ( Box  dev)
staticprotected

Definiert in Zeile 294 der Datei Box.cpp.

Benutzt UNREACHABLECT.

Wird benutzt von mutabor::BoxClass::Destroy().

295  {
296  typename listtype::iterator i =
297  FindInBoxList(b);
298  if (i == boxList.end()) {
300  } else
301  boxList.erase(i);
302  }
static listtype boxList
Definition: Box.h:805
static listtype::iterator FindInBoxList(Box b)
Definition: Box.h:856
#define UNREACHABLECT(type)
Definition: debug.h:255
BoxListType listtype
Definition: Box.h:237
template<class T , class P , class L >
void mutabor::CommonTypedDeviceAPI< T, P, L >::RemoveFromDeviceList ( DevicePtr  dev)
staticprotected

Definiert in Zeile 305 der Datei Device.cpp.

Benutzt UNREACHABLECT.

306  {
307  typename listtype::iterator i =
308  FindInDeviceList(dev);
309  if (i == deviceList.end()) {
311  } else
312  deviceList.erase(i);
313  }
static listtype::iterator FindInDeviceList(DevicePtr dev)
Definition: Device.h:816
static listtype deviceList
Definition: Device.h:694
#define UNREACHABLECT(type)
Definition: debug.h:255
template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::RemoveFromRouteList ( Route  route)
staticprotected

Definiert in Zeile 296 der Datei Route.cpp.

Benutzt mutASSERT.

297  {
298  typename TRouteClass<I, O>::routeListType::iterator r =
299  std::find(routeList.begin(),
300  routeList.end(),
301  route.get());
302  mutASSERT(r != routeList.end());
303 
304  if (r != routeList.end()) {
305  routeList.erase(r);
306  }
307  }
#define mutASSERT(expr)
static routeListType routeList
Definition: Route.h:472
TagList* RemoveTag ( TagList **  list)

Definiert in Zeile 462 der Datei GIS_Head.cpp.

Benutzt TagListData::Next.

Wird benutzt von AddTag() und EndTag().

463 {
464  if ( *list ) {
465  TagList *TopTag = *list;
466  *list = TopTag->Next;
467  delete TopTag;
468  }
469 
470  return *list;
471 }
struct TagListData * Next
Definition: GIS_Head.h:147
template<class I , class O , class B >
bool mutabor::TRouteClass< I, O, B >::Replace ( OutputDevice olddev,
OutputDevice newdev 
)
virtual

replace an existing output device

Definiert in Zeile 154 der Datei Route.cpp.

Benutzt UNREACHABLEC.

155  {
156  if (Out != olddev) {
157  UNREACHABLEC;
158  return false;
159  }
160  Out = newdev;
161  return true;
162  }
OutputDevice Out
Definition: Route.h:463
#define UNREACHABLEC
Definition: debug.h:256
template<class I = InputDevice, class O = OutputDevice, class B = Box>
virtual bool mutabor::TRouteClass< I, O, B >::Replace ( InputDevice olddev,
InputDevice newdev 
)
virtual

replace an existing input device

template<class I = InputDevice, class O = OutputDevice, class B = Box>
virtual bool mutabor::TRouteClass< I, O, B >::Replace ( Box oldbox,
Box newbox 
)
virtual

replace an existing box

bool mutabor::BoxClass::Replace ( Route oldRoute,
Route newRoute 
)
virtual

replace a route

Definiert in Zeile 138 der Datei Box.cpp.

Benutzt DEBUGLOG und mutASSERT.

138  {
139  DEBUGLOG (smartptr, "oldroute; %p, newroute; %p" ,
140  (void*)oldroute.get(),(void*)newroute.get());
141  bool found = Remove(oldroute);
142  mutASSERT(found);
143  if (found)
144  Add(newroute);
145 
146  DEBUGLOG (smartptr, "oldroute; %p, newroute; %p" ,
147  (void*)oldroute.get(),(void*)newroute.get());
148  return found;
149  }
#define DEBUGLOG(level,...)
Definition: debug.h:240
#define mutASSERT(expr)
virtual void Add(Route &route)
add a route
Definition: Box.cpp:124
virtual bool Remove(Route &route)
remove a route
Definition: Box.cpp:151
virtual bool mutabor::Device::Replace ( Route oldRoute,
Route newRoute 
)
pure virtual
template<class T , class P , class L >
bool mutabor::CommonTypedDeviceAPI< T, P, L >::Replace ( Route oldroute,
Route newroute 
)
virtual

replace a route

Implementiert mutabor::Device.

Definiert in Zeile 149 der Datei Device.cpp.

Benutzt mutabor::CommonTypedDeviceAPI< T, P, L >::Add(), DEBUGLOG, mutASSERT und mutabor::CommonTypedDeviceAPI< T, P, L >::Remove().

150  {
151  DEBUGLOG (smartptr, "oldroute; %p, newroute; %p" ,
152  (void*)oldroute.get(),(void*)newroute.get());
153  bool found = CommonTypedDeviceAPI<T,P,L>::Remove(oldroute);
154  mutASSERT(found);
155  if (found)
157 
158  DEBUGLOG (smartptr, "oldroute; %p, newroute; %p" ,
159  (void*)oldroute.get(),(void*)newroute.get());
160  return found;
161  }
#define DEBUGLOG(level,...)
Definition: debug.h:240
#define mutASSERT(expr)
virtual bool Remove(Route &route)
remove a route
Definition: Device.cpp:164
virtual void Add(Route &route)
add a route
Definition: Device.cpp:135
void mutabor::ChannelData::Reset ( )
inline

Definiert in Zeile 127 der Datei Device.h.

Benutzt mutabor::ChannelData::bank_coarse, mutabor::ChannelData::bank_fine, mutabor::ChannelData::bend, mutabor::ChannelData::controller, mutabor::ChannelData::controller_changed, mutabor::ChannelData::first_unchanged, mutabor::ChannelData::looped und mutabor::ChannelData::Sound.

Wird benutzt von mutabor::CommonMidiOutput< T, D >::do_Open() und mutabor::CommonMidiOutput< T, D >::do_Panic().

128  {
129  for (controller_vector::iterator i = controller.begin();
130  i != controller.end();
131  ++i) *i = -1;
132  for (controller_vector::iterator i = controller_changed.begin();
133  i != controller_changed.end();
134  ++i) *i = -1;
135  first_unchanged = 0;
136  looped = false;
137  Sound = -1;
138  bank_coarse = -1;
139  bank_fine = -1;
140  bend = 0;
141  }
size_t first_unchanged
Definition: Device.h:493
controller_vector controller
Definition: Device.h:491
uint8_t bank_fine
Definition: Device.h:498
controller_vector controller_changed
Definition: Device.h:492
uint8_t bank_coarse
Definition: Device.h:497
void mutabor::BoxClass::Reset ( )
virtual

Definiert in Zeile 381 der Datei Box.cpp.

Benutzt mutabor::hidden::mutabor_reset_box().

381  {
383 #if 0
384  hidden::mutabor_reset_action_trace(box);
385 #endif
386  }
void mutabor_reset_box(struct mutabor_box_type *box)
Definition: box.cpp:107
struct mutabor_box_type * box
Definition: Box.h:810
void mutabor::BoxClass::resume_logic ( )
inline

Allow the execution of logic actions after this function has been disabled.

Definiert in Zeile 632 der Datei Box.h.

Benutzt mutabor::hidden::mutabor_box_flags::auto_reset_break_logic, mutabor::BoxClass::box und mutabor::hidden::mutabor_box_type::flags.

632  {
633  if (box)
635  }
unsigned int auto_reset_break_logic
Automatically reset logic breaking.
Definition: box.h:98
struct mutabor_box_type * box
Definition: Box.h:810
volatile struct mutabor_box_flags flags
Definition: box.h:157
void mutabor::InputDeviceClass::ResumeKeys ( )
Noch zu erledigen:
move implementation to midicmn and Co.

Definiert in Zeile 374 der Datei Device.cpp.

Benutzt mutabor::InputDeviceClass::current_keys_type::begin(), mutabor::InputDeviceClass::current_keys, DEBUGLOG, mutabor::InputDeviceClass::current_keys_type::end(), mutabor::ChannelData::get_controller(), mutabor::midi::get_holds(), mutabor::InputDeviceClass::GetChannelData() und mutabor::InputDeviceClass::write_lock.

Wird benutzt von mutabor::CommonFileInputDevice::ThreadPlay().

374  {
375  ScopedLock lock(write_lock);
376 
377  DEBUGLOG (routing, "" );
379  size_t j = 0;
380  for (i = current_keys.begin();i!= current_keys.end();i++) {
381  DEBUGLOG (routing, "(key = %d, channel = %lu, id = %lu)" ,
382  i->key,
383  (unsigned long)i->route->get_session_id(),
384  (unsigned long)i->unique_id);
385  for (const int * k = midi::get_holds();
386  *k >= 0; k++) {
387  i->route->Controller(*k,
389  i->unique_id);
390  }
391  i->route->NoteOn(i->key,
392  i->velocity,
393  i->unique_id,
394  *i->settings,
395  i->userdata);
396  j++;
397  }
398  DEBUGLOG (routing, "revived %lu keys" ,(unsigned long)j);
399  }
#define DEBUGLOG(level,...)
Definition: debug.h:240
wxMutexLocker ScopedLock
Definition: thread.h:57
current_keys_type current_keys
Definition: Device.h:1314
int get_controller(size_t number) const
Definition: Device.h:326
const int * get_holds()
Return a list of hold controllers.
Definition: MidiKern.h:422
virtual ChannelData & GetChannelData(const current_keys_type::entry &key) const =0
mutabor::RouteFactory::RouteFactory ( )

Creates a route Factory.

Constructor. Should be overridden if classes inhert from Route.

Definiert in Zeile 537 der Datei Route.cpp.

Benutzt mutabor::RouteFactory::factory.

537  {
538  if (factory) {
539 // UNREACHABLEC;
540  BOOST_THROW_EXCEPTION( FactoryAlreadySet(factory,this));
541  /*
542  delete factory;
543  factory = this;
544  */
545 
546  } else factory = this;
547  }
static RouteFactory * factory
Pointer to the current factory.
Definition: Route.h:743
mutabor::RouteFactory::RouteFactoryNotSet::RouteFactoryNotSet ( )
inline

Definiert in Zeile 580 der Datei Route.h.

580 :logic_error(_mutN("Trying to create a route without the correct factory. You (the programmer) must create one!")) {}
#define _mutN(x)
Definition: Defs.h:116
compat30::RouteIOError::RouteIOError ( const std::string &  what_arg)
inlineexplicit

Definiert in Zeile 57 der Datei RouteCompat.h.

57  :
58  range_error(what_arg) {}
void mutabor::Device::runtime_error ( int  type,
const std::string &  message 
)
virtual

Process an error message (doing the real work)

Definiert in Zeile 85 der Datei Device.cpp.

Benutzt mutabor::to_string().

Wird benutzt von mutabor::CommonFileInputDevice::exception_error(), mutabor::MidiPortOutputProvider::Open(), mutabor::InputGis::Open() und mutabor::OutputMidiPort::SetDevId().

85  {
86  std::string t = mutabor::to_string((mutabor::error_type)type);
87  std::cerr << t << ": " << message << std::endl;
88  }
const char * to_string(error_type type)
Definition: Box.h:107
void mutabor::BoxClass::runtime_error ( error_type  type,
const char *  message 
)
virtual

Process an error message (doing the real work)

Erneute Implementation in mutaborGUI::BoxData.

Definiert in Zeile 806 der Datei Box.cpp.

Benutzt mutabor::to_string().

Wird benutzt von error_callback(), mutabor::error_callback() und mutabor::BoxClass::issue_error().

806  {
807  fprintf(stderr,"%s: %s\n",to_string(type),message);
808  }
const char * to_string(error_type type)
Definition: Box.h:107
template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::Save ( tree_storage config)
virtual

Write the route settings into a tree based configuration.

config (tree_storage &) configuration where the route settings will be stored

Definiert in Zeile 71 der Datei Route.cpp.

Benutzt mutabor::tree_storage::GetPath(), mutASSERT und mutabor::tree_storage::Write().

72  {
73 #ifdef DEBUG
74  std::string oldpath = config.GetPath();
75 #endif
76  config.Write("Input Device", inputid);
77  config.Write("Output Device", outputid);
78  config.Write("Box", boxid);
79  config.Write("Active", Active);
80  if (In)
81  In->Save(config,this);
82  if (Out)
83  Out->Save(config,this);
84  mutASSERT(oldpath == config.GetPath());
85  }
InputDevice In
Definition: Route.h:464
#define mutASSERT(expr)
OutputDevice Out
Definition: Route.h:463
void mutabor::BoxClass::Save ( tree_storage config)
virtual

Save current device settings in a tree storage.

config (tree_storage) storage class, where the data will be saved.

Erneute Implementation in mutaborGUI::BoxData.

Definiert in Zeile 110 der Datei Box.cpp.

Wird benutzt von mutaborGUI::BoxData::Save().

110  {
111  }
void mutabor::BoxClass::Save ( tree_storage config,
const RouteClass route 
)
virtual

Save route settings (filter settings) for a given route.

Some route settings (e.g. filter settings) are device type specific. This function saves them in a tree storage. config (tree_storage *) Storage class, where the data will be saved. route (Route) Route whos data shall be saved.

Definiert in Zeile 113 der Datei Box.cpp.

114  {
115  }
virtual void mutabor::Device::Save ( tree_storage config)
pure virtual

Save current device settings in a tree storage.

config (tree_storage) storage class, where the data will be saved.

Implementiert in mutabor::OutputMidiFile, mutabor::InputMidiPort, mutabor::OutputMidiPort, mutabor::CommonFileInputDevice, midicmnInputDevice, mutabor::OutputGis, midicmnOutputDevice und mutabor::CommonFileOutputDevice.

virtual void mutabor::Device::Save ( tree_storage config,
const RouteClass route 
)
pure virtual

Save route settings (filter settings) for a given route.

Some route settings (e.g. filter settings) are device type specific. This function saves them in a tree storage. config (tree_storage *) Storage class, where the data will be saved. route (Route) Route whos data shall be saved.

Implementiert in mutabor::InputMidiFile, mutabor::OutputMidiFile, mutabor::InputMidiPort, mutabor::OutputMidiPort, mutabor::InputGis, midicmnInputDevice, testCommonFileDeviceTimer, testCommonFileDeviceTimer, mutabor::OutputGis und midicmnOutputDevice.

void mutabor::BoxFactory::SaveBoxes ( tree_storage config)
static

write the routes to the configuration

Parameter
configconfiguration to be written to

Definiert in Zeile 987 der Datei Box.cpp.

Benutzt mutabor::BoxClass::GetBoxList(), mutabor::tree_storage::GetPath(), mutASSERT, mutabor::tree_storage::toLeaf(), mutabor::tree_storage::toParent() und mutabor::tree_storage::Write().

Wird benutzt von mutabor::RouteFactory::DoSaveRoutes().

988  {
989 #ifdef DEBUG
990  std::string oldpath = config.GetPath();
991 #endif
992  config.toLeaf(("Boxes"));
993 
994  const BoxListType & list =
996  for (BoxListType::const_iterator b = list.begin();
997  b != list.end(); b++) {
998  int id = (*b)->get_routefile_id();
999  config.toLeaf(("Box"), id);
1000  config.Write(("Type"), (*b)->GetType() );
1001  config.Write(("Type Name"),(*b)->GetTypeName());
1002  (*b) -> Save (config);
1003  config.toParent();
1004  }
1005 
1006  config.toParent();
1007  mutASSERT(oldpath == config.GetPath());
1008  }
static const listtype & GetBoxList()
Definition: Box.h:340
std::vector< Box > BoxListType
Definition: Box.h:123
#define mutASSERT(expr)
void mutabor::DeviceFactory::SaveInputDevices ( tree_storage config)
static

write the routes to the configuration

Parameter
configconfiguration to be written to

Definiert in Zeile 620 der Datei Device.cpp.

Benutzt mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::tree_storage::GetPath(), mutASSERT, mutabor::tree_storage::toLeaf(), mutabor::tree_storage::toParent(), TRACE und mutabor::tree_storage::Write().

Wird benutzt von mutabor::RouteFactory::DoSaveRoutes().

621  {
622 #ifdef DEBUG
623  std::string oldpath = config.GetPath();
624 #endif
625  config.toLeaf("InputDevices");
626 
627 
628  TRACE;
630  for (InputDeviceList::const_iterator in = list.begin();
631  in != list.end(); in++) {
632  config.toLeaf("Device",(*in)->get_routefile_id());
633  config.Write("Type",(*in)->GetType());
634  config.Write("Type Name",(*in)->GetTypeName());
635  (*in) -> Save (config);
636  config.toParent();
637  }
638  TRACE;
639 
640  config.toParent();
641  mutASSERT(oldpath == config.GetPath());
642  }
#define mutASSERT(expr)
CommonTypedDeviceAPI< InputDeviceClass >::listtype InputDeviceList
Definition: Device.h:1011
#define TRACE
Definition: debug.h:245
static const listtype & GetDeviceList()
Definition: Device.h:752
void mutabor::DeviceFactory::SaveOutputDevices ( tree_storage config)
static

write the routes to the configuration

Parameter
configconfiguration to be written to

Definiert in Zeile 564 der Datei Device.cpp.

Benutzt mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::tree_storage::GetPath(), mutASSERT, mutabor::tree_storage::toLeaf(), mutabor::tree_storage::toParent() und mutabor::tree_storage::Write().

Wird benutzt von mutabor::RouteFactory::DoSaveRoutes().

565  {
566 #ifdef DEBUG
567  std::string oldpath = config.GetPath();
568 #endif
569  config.toLeaf("OutputDevices");
570 
571  const OutputDeviceList & list =
573  for (OutputDeviceList::const_iterator out = list.begin();
574  out != list.end(); out++) {
575  config.toLeaf("Device",
576  static_cast<Device *>((*out).get())->get_routefile_id());
577  config.Write("Type",(*out)->GetType());
578  config.Write("Type Name",(*out)->GetTypeName());
579  (*out) -> Save (config);
580  config.toParent();
581  }
582 
583  config.toParent();
584  mutASSERT(oldpath == config.GetPath());
585  }
CommonTypedDeviceAPI< OutputDeviceClass >::listtype OutputDeviceList
Definition: Device.h:838
#define mutASSERT(expr)
void SavePos ( )

Definiert in Zeile 169 der Datei GSP.cpp.

Benutzt CurrentLine, CurrentPos, GspCurrentLineNr, PossibleErrorLine, PossibleErrorLineNr und PossibleErrorPos.

Wird benutzt von DoParse().

170 {
174 }
int PossibleErrorLineNr
Definition: GSP.cpp:35
std::string CurrentLine
Definition: GSP_File.cpp:36
size_t CurrentPos
Definition: GSP_File.cpp:37
std::string PossibleErrorLine
Definition: GSP.cpp:37
int PossibleErrorPos
Definition: GSP.cpp:36
int GspCurrentLineNr
Definition: GSP.cpp:28
void compat30::SaveRoutes ( std::string &  )

write the routes to the given string

Parameter
configstring to be written to
Rückgabe
the error message in case of an error.

reimplement WriteRoutes

Definiert in Zeile 338 der Datei RouteCompat.cpp.

Benutzt DEBUGLOG2, mutabor::DTGis, mutabor::DTMidiFile, mutabor::DTMidiPort, mutabor::DTNotSet, mutabor::DTUnknown, mutabor::Device::get_routefile_id(), mutabor::CommonMidiOutput< T, D >::GetBendingRange(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::InitializeIds(), mutabor::NoBox, mutabor::RTName, mutabor::str(), STUB und UNREACHABLE.

Wird benutzt von mutaborGUI::MutRouteWnd::CmRouteSave().

339  {
341  STUB;
342 
343  RouteClass::InitializeIds();
344 
345  // clean config
346  config = "";
347  // remove unused output devices
348  OutputDevice Out;
349  InputDevice In;
350 
351  // Output schreiben
352  config += ("OUTPUT\n");
353 
354  const OutputDeviceList & OutDevices =
355  OutputDeviceClass::GetDeviceList();
356 
357  for ( OutputDeviceList::const_iterator Out = OutDevices.begin();
358  Out != OutDevices.end(); Out++) {
359 
360  std::string sName = (*Out)->GetName();
361 
362  if ( sName.find((" ")) != std::string::npos)
363  sName = "\"" + sName + "\"";
364 
365  switch ( (*Out)->GetType() ) {
366 
367  case DTUnknown:
368  config += boost::str(boost::format(" UNKNOWN %s\n")%
369  sName.c_str());
370 
371  break;
372 
373  case DTMidiPort:
374  {
375  OutputMidiPort * MidiOut =
376  dynamic_cast <OutputMidiPort *>((*Out).get());
377  if (MidiOut)
378  config += boost::str(boost::format(" MIDIPORT %s %d %d\n")
379  % sName.c_str()
380  % (*Out)->get_routefile_id()
381  % MidiOut->GetBendingRange());
382  else
383  UNREACHABLE;
384  }
385  break;
386 
387  case DTMidiFile:
388  {
389  OutputMidiFile * MidiFile =
390  dynamic_cast <OutputMidiFile *>((*Out).get());
391  if (MidiFile)
392  config += boost::str(boost::format(" MIDIFILE %s %d %d\n")
393  % sName.c_str()
394  % 0
395  % MidiFile->GetBendingRange());
396  else
397  UNREACHABLE;
398  }
399  break;
400 
401  case DTGis:
402  config += boost::str(boost::format(" GMN %s\n")% sName.c_str());
403 
404  break;
405 
406  case DTNotSet:
407  UNREACHABLE;
408  }
409  }
410 
411  DEBUGLOG2(routing,("WriteConfig: %s"), (config.c_str()));
412 
413  // Input schreiben
414  config += ("INPUT\n");
415 
416  const InputDeviceList & InDevices =
417  InputDeviceClass::GetDeviceList();
418  for ( InputDeviceList::const_iterator In = InDevices.begin();
419  In != InDevices.end(); In++) {
420  std::string sName = (*In)->GetName();
421 
422  if ( sName.find((" ")) != std::string::npos )
423  sName = "\"" + sName + "\"";
424 
425  switch ( (*In)->GetType() ) {
426 
427  case DTUnknown:
428  config += boost::str(boost::format(" UNKNOWN %s\n") % sName.c_str());
429 
430  break;
431 
432  case DTGis:
433  config += boost::str(boost::format(" GMN %s\n") % sName.c_str());
434 
435  break;
436 
437  case DTMidiPort:
438  config += boost::str(boost::format(" MIDIPORT %s %d\n") % sName.c_str()
439  % static_cast<InputMidiPort *>((*In).get())->GetDevId());
440 
441  break;
442 
443  case DTMidiFile:
444  config += boost::str(boost::format(" MIDIFILE %s\n") % sName.c_str());
445 
446  break;
447 
448  case DTNotSet:
449  UNREACHABLE;
450 
451  break;
452  }
453 
454  // Routen schreiben
455  routeListType & routes = (*In)->GetRoutes();
456  for (routeListType::iterator R = routes.begin();
457  R!= routes.end(); R++) {
458  Device * dev = (*R)->GetOutputDevice().get();
459  int OutNr;
460  OutNr = (dev ? dev->get_routefile_id(): -1);
461  config += " " + RTName[(*R)->GetType()] +
462  boost::str(boost::format(" %d %d %d %d %d %d %d %d\n")
463  % (*R)->GetInputFrom()
464  % (*R)->GetInputTo()
465  % ((*R)->GetBox()?
466  (*R)->GetBox()->get_routefile_id():
467  NoBox)
468  % (*R)->GetActive()
469  % OutNr
470  % (*R)->GetOutputFrom()
471  % (*R)->GetOutputTo()
472  % ((*R)->OutputAvoidDrumChannel() ? 1 : 0));
473  }
474  }
475 
476  DEBUGLOG2(routing,("WriteRoutes: %s"), (config.c_str()));
477  }
#define STUB
Definition: debug.h:250
int get_routefile_id() const
Definition: Device.h:610
std::string str(T obj)
Definition: Defs.h:110
CommonTypedDeviceAPI< OutputDeviceClass >::listtype OutputDeviceList
Definition: Device.h:838
const std::string RTName[]
Definition: Route.cpp:49
CommonTypedDeviceAPI< OutputDeviceClass >::DevicePtr OutputDevice
Definition: Device.h:836
CommonTypedDeviceAPI< InputDeviceClass >::listtype InputDeviceList
Definition: Device.h:1011
CommonTypedDeviceAPI< InputDeviceClass >::DevicePtr InputDevice
Definition: Device.h:1009
#define DEBUGLOG2(level,...)
Definition: debug.h:241
TRouteClass< InputDevice, OutputDevice, Box >::routeListType routeListType
Definition: Route.h:547
int GetBendingRange() const
Definition: midicmn.h:561
#define UNREACHABLE
Definition: debug.h:254
template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::SaveRoutes ( tree_storage config)
static

Save the current routes in a tree storage.

This function saves all routes in a tree based storage. config (tree_storage *) storage driver to use for saving.

Definiert in Zeile 227 der Datei Route.cpp.

Benutzt mutabor::tree_storage::GetPath(), mutASSERT, mutabor::tree_storage::toLeaf() und mutabor::tree_storage::toParent().

228  {
229 #ifdef DEBUG
230  std::string oldpath = config.GetPath();
231 #endif
232  config.toLeaf("Routes");
233 
234  for (typename TRouteClass<I, O>::routeListType::iterator
235  route = routeList.begin();
236  route != routeList.end(); route++) {
237  config.toLeaf(("Route"),(*route)->get_routefile_id());
238  (*route) -> Save (config);
239  config.toParent();
240  }
241 
242  config.toParent();
243  mutASSERT(oldpath == config.GetPath());
244  }
#define mutASSERT(expr)
static routeListType routeList
Definition: Route.h:472
virtual void Save(tree_storage &config)
Write the route settings into a tree based configuration.
Definition: Route.cpp:71
static void mutabor::RouteFactory::SaveRoutes ( tree_storage config)
inlinestatic

write the routes to the configuration

Parameter
configconfiguration to be written to

Definiert in Zeile 667 der Datei Route.h.

Benutzt mutabor::RouteFactory::DoSaveRoutes() und mutabor::RouteFactory::factory.

Wird benutzt von mutaborGUI::MutRouteWnd::CmRouteSave() und SaveRoutes().

667  {
668  if (factory)
669  factory->DoSaveRoutes(config);
670  else
671  BOOST_THROW_EXCEPTION( RouteFactoryNotSet());
672  // UNREACHABLECT(RouteFactory);
673  }
virtual void DoSaveRoutes(tree_storage &config) const
write the routes to the configuration
Definition: Route.cpp:589
static RouteFactory * factory
Pointer to the current factory.
Definition: Route.h:743
mutabor::BoxClass::scoped_watchdog::scoped_watchdog ( BoxClass b)
inline

Definiert in Zeile 796 der Datei Box.h.

Benutzt mutabor::BoxClass::BoxLock::box.

796  :BoxLock(b) {
797  ScopedLock(box->logic_timing_mutex);
798  box->logic_timing = 0;
799  }
wxMutexLocker ScopedLock
Definition: thread.h:57
BoxLock(BoxClass *b)
Definition: Box.h:783
mutabor::ScopedBox::ScopedBox ( BoxClass rhs)
inline

Definiert in Zeile 969 der Datei Box.h.

969 :Box(rhs) {}
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:121
mutabor::ScopedBox::ScopedBox ( const Box rhs)
inline

Definiert in Zeile 970 der Datei Box.h.

970 :Box(rhs) {}
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:121
size_t SepPos ( )
inline

Definiert in Zeile 40 der Datei GSP.cpp.

Benutzt Sep.

41 {
42  size_t a = (Sep.length());
43  return a;
44 }
std::string Sep
Definition: GSP.cpp:39
void mutabor::ChannelData::set_bend ( int  b)
inline
mutabor::BoxClass::set_callback::set_callback ( BoxClass b,
CompileCallback callback 
)
inline

Definiert in Zeile 824 der Datei Box.h.

Benutzt mutabor::BoxClass::set_callback::box und mutabor::BoxClass::current_compile_callback.

825  :box(b) {
826  box->current_compile_callback = callback;
827  }
CompileCallback * current_compile_callback
Definition: Box.h:832
int mutabor::ChannelData::set_controller ( size_t  number,
int  data 
)
inline

Definiert in Zeile 155 der Datei Device.h.

Benutzt mutabor::ChannelData::controller, mutabor::ChannelData::controller_changed, mutabor::midi::DATA_BUTTON_DECREMENT, mutabor::midi::DATA_BUTTON_INCREMENT, mutabor::midi::DATA_ENTRY_COARSE, mutabor::midi::DATA_ENTRY_FINE, mutabor::ChannelData::data_is_rpn, DEBUGLOG, mutabor::midi::FIRST_NRPN, mutabor::midi::FIRST_RPN, mutabor::ChannelData::first_unchanged, mutabor::ChannelData::looped, mutabor::midi::NON_REGISTERED_PARAMETER_COARSE, mutabor::midi::NON_REGISTERED_PARAMETER_FINE, mutabor::midi::REGISTERED_PARAMETER_COARSE und mutabor::midi::REGISTERED_PARAMETER_FINE.

Wird benutzt von mutabor::CommonMidiOutput< T, D >::CopyProgramChange(), mutabor::CommonMidiOutput< T, D >::do_Controller(), mutabor::CommonMidiOutput< T, D >::do_NoteOn(), mutabor::CommonMidiOutput< T, D >::do_Open(), mutabor::CommonMidiOutput< MidiPortOutputProvider, OutputDeviceClass >::do_SendBendingRange(), mutabor::CommonMidiOutput< T, D >::do_UpdateControllers(), mutabor::ChannelData::MidiReset() und mutabor::CommonMidiOutput< T, D >::OutputParameter().

155  {
156 
157  if (controller.size() <= number)
158  controller.resize(number +1,-1);
159  int retval = controller[number];
160  int param = -1;
161  DEBUGLOG(midiio,("ctrl: %d, %d => %d"),(int)number,(int)retval,(int)data);
162  controller[number] = data;
163 
164  // we allow to set a controller to an udefined state.
165  if (data < 0) return retval;
166 
167  switch (number) {
170  data_is_rpn = false;
171  break;
174  data_is_rpn = true;
175  break;
180  if (!data_is_rpn
185  param = midi::FIRST_NRPN
188  } else if (data_is_rpn
193  param = midi::FIRST_RPN
196  }
197  if (param != -1) {
198  if (controller.size() <= (size_t) param)
199  controller.resize(param+1,-1);
200  switch (number) {
202  if (!(controller[param]&0x80)) {
203  // skip the sign bit for lsb
204  int value = controller[param];
205  value++;
206  if (value & 0x80) {
207  if (!(value & 0x8000))
208  value += 0x100;
209  value &= ~((int)0xff);
210  }
211  controller[param] = value;
212  }
213  break;
215  if (!(controller[param]&0x80)) {
216  int value = controller[param];
217  bool hasmsb = !(value & 0x8000);
218  value--;
219  if (value & 0x80) {
220  if (!hasmsb) {
221  value |= 0xFF00;
222  }
223  value &= ~((int)0x80);
224  }
225  }
226  break;
228  int value = (controller[param] & 0xFF) | ((data & 0xFF) << 8);
229  if (controller[param] != value)
230  set_controller(param,value);
231  }
232  break;
233  case midi::DATA_ENTRY_FINE: {
234  int value = (controller[param] & 0xff00)| (data & 0xff);
235  if (controller[param] != value)
236  set_controller(param,value);
237  }
238  break;
239  }
240  }
241  break;
242  }
243 
244 
245 
246  bool found = false;
247  size_t index;
248  for (size_t i = 0; i < (looped?controller.size():first_unchanged);i++) {
249  if (controller_changed[i] == (int)number) {
250  controller_vector :: iterator beg = controller_changed.begin();
251  std::rotate(beg + i,beg+i+1 ,beg +first_unchanged);
252  found = true;
253  index = first_unchanged-1;
254  break;
255  }
256  }
257  if (!found)
258  index = first_unchanged++;
259 
260  controller_changed[index] = number;
261 
262  return retval;
263  }
size_t first_unchanged
Definition: Device.h:493
#define DEBUGLOG(level,...)
Definition: debug.h:240
controller_vector controller
Definition: Device.h:491
controller_vector controller_changed
Definition: Device.h:492
int set_controller(size_t number, int data)
Definition: Device.h:155
void mutabor::BoxClass::set_routefile_id ( int  id)
virtual

Erneute Implementation in mutaborGUI::BoxData.

Definiert in Zeile 97 der Datei Box.cpp.

Benutzt mutASSERT und mutabor::NewBox.

Wird benutzt von mutabor::BoxClass::BoxClass().

97  {
98  BoxLock lock(this);
99 
100  if (id == NewBox) {
101  id = nextboxid++;
102  } else if (id >= nextboxid)
103  nextboxid = id + 1;
104  routefile_id = id;
105  mutASSERT(box);
106  if (!box) return;
107  box->id = routefile_id;
108  }
#define mutASSERT(expr)
struct mutabor_box_type * box
Definition: Box.h:810
static int nextboxid
Definition: Box.h:806
int routefile_id
Definition: Box.h:812
void mutabor::Device::set_routefile_id ( int  id)
inlineprotected

Definiert in Zeile 671 der Datei Device.h.

Benutzt mutabor::Device::routefile_id.

Wird benutzt von mutabor::DeviceFactory::LoadInputDevices().

671  {
672  routefile_id = id;
673  }
int routefile_id
Definition: Device.h:648
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::SetActive ( bool  active)
inline

Definiert in Zeile 323 der Datei Route.h.

323  {
324  Active = active;
325  }
virtual void mutabor::BoxClass::ChangedCallback::SetBox ( Box b)
inlinevirtual

Definiert in Zeile 225 der Datei Box.h.

Benutzt mutabor::BoxClass::ChangedCallback::box.

225  {
226  if (b == box) return;
227  if (box)
228  box->Unregister(this);
229  box = b;
230  if (box)
231  box->Register(this);
232  }
template<class I = InputDevice, class O = OutputDevice, class B = Box>
virtual void mutabor::TRouteClass< I, O, B >::SetBox ( Box  b)
inlinevirtual

Definiert in Zeile 331 der Datei Route.h.

331  {
332  box = b;
333  }
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::SetBoxId ( int  Id)
inline

Definiert in Zeile 303 der Datei Route.h.

303  {
304  boxid = Id;
305  }
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::SetDeviceId ( int  Id,
 
)
inline

Definiert in Zeile 296 der Datei Route.h.

296  {
297  inputid = Id;
298  }
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::SetDeviceId ( int  Id,
 
)
inline

Definiert in Zeile 300 der Datei Route.h.

300  {
301  outputid = Id;
302  }
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::SetInputFrom ( int  i)
inline

Definiert in Zeile 351 der Datei Route.h.

Wird benutzt von mutabor::InputMidiPort::Load() und mutabor::InputMidiFile::Load().

351  {
352  IFrom = i;
353  }
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::SetInputTo ( int  i)
inline

Definiert in Zeile 367 der Datei Route.h.

Wird benutzt von mutabor::InputMidiPort::Load() und mutabor::InputMidiFile::Load().

367  {
368  ITo = i;
369  }
virtual void mutabor::BoxClass::CompileCallback::SetLine ( int  number)
pure virtual
void mutabor::BoxClass::SetLogic ( Box  b)
inline

Definiert in Zeile 637 der Datei Box.h.

Benutzt mutabor::BoxClass::box, mutabor::hidden::mutabor_box_type::file und mutabor::hidden::mutabor_set_logic().

Wird benutzt von mutaborGUI::BoxData::BoxData().

637  {
639  }
void mutabor_set_logic(struct mutabor_box_type *box, struct mutabor_logic_parsed *logic)
Definition: box.cpp:52
struct mutabor_box_type * box
Definition: Box.h:810
struct mutabor_logic_parsed * file
Definition: box.h:155
virtual void mutabor::BoxClass::CompileCallback::SetMessage ( std::string  message)
pure virtual
virtual void mutabor::Device::SetMode ( MutaborModeType  m)
inlinevirtual

Definiert in Zeile 576 der Datei Device.h.

Benutzt mutabor::Device::Mode.

576 { Mode = m; }
enum MutaborModeType Mode
Definition: Device.h:652
virtual void mutabor::Device::SetName ( const std::string &  s)
inlinevirtual

Erneute Implementation in mutabor::OutputMidiFile, mutabor::InputMidiPort, mutabor::CommonFileInputDevice, mutabor::OutputGis und mutabor::CommonFileOutputDevice.

Definiert in Zeile 591 der Datei Device.h.

Benutzt mutabor::Device::Name.

591  {
592  Name = s;
593  }
std::string Name
Definition: Device.h:649
int ChordNote::SetNoteOff ( GisToken note)

Definiert in Zeile 834 der Datei GIS_Head.cpp.

Benutzt CmpNote(), CNNoteOn und mutabor::CurrentTime.

835 {
836 
837  if ( (Status & CNNoteOn) && CmpNote(*Cursor, note) )
838  {
839  ((GisNote*)*Cursor)->Duration = CurrentTime;
840  Cursor = &((*Cursor)->Next);
841  CurrentTime = frac(0,1);
842  Status -= CNNoteOn;
843  Boss->NoteOn--;
844  return 1;
845  }
846 
847  if ( Next ) return Next->SetNoteOff(note);
848 
849  return 0;
850 }
GisToken ** Cursor
Definition: GIS_Head.h:435
GisWriteHead * Boss
Definition: GIS_Head.h:436
char Status
Definition: GIS_Head.h:441
char NoteOn
Definition: GIS_Head.h:325
ChordNote * Next
Definition: GIS_Head.h:433
Definition: GIS.h:423
int CmpNote(GisToken *note1, GisToken *note2)
Definition: GIS_Head.cpp:765
#define CNNoteOn
Definition: GIS_Head.h:423
mutabor::frac CurrentTime
Definition: GIS_Head.h:437
int SetNoteOff(GisToken *note)
Definition: GIS_Head.cpp:834
void ChordNote::SetNoteOn ( GisToken note)

Definiert in Zeile 826 der Datei GIS_Head.cpp.

Benutzt CNNoteOn und NOTE.

Wird benutzt von GisWriteHead::ProceedGis().

827 {
828  *Cursor = new GisNote(NOTE->Name, NOTE->Accedentials, NOTE->Octave,
829  frac(0, 1), NOTE->Sep, 0);
830  Status += CNNoteOn;
831  Boss->NoteOn++;
832 }
GisToken ** Cursor
Definition: GIS_Head.h:435
#define NOTE
Definition: GIS_Head.cpp:825
GisWriteHead * Boss
Definition: GIS_Head.h:436
char Status
Definition: GIS_Head.h:441
char NoteOn
Definition: GIS_Head.h:325
Definition: GIS.h:423
#define CNNoteOn
Definition: GIS_Head.h:423
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::SetOutputFrom ( int  o)
inline

Definiert in Zeile 359 der Datei Route.h.

Wird benutzt von mutabor::OutputMidiPort::Load() und mutabor::OutputMidiFile::Load().

359  {
360  OFrom = o;
361  }
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::SetOutputTo ( int  o)
inline

Definiert in Zeile 375 der Datei Route.h.

Wird benutzt von mutabor::OutputMidiPort::Load() und mutabor::OutputMidiFile::Load().

375  {
376  OTo = o;
377  }
virtual void mutabor::BoxClass::CompileCallback::SetStatus ( std::string  status)
pure virtual
virtual void mutabor::BoxClass::CompileCallback::SetStatus ( int  logics,
int  tones,
int  tunings,
int  tone_systems,
int  intervals,
int  characters 
)
pure virtual
template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::SetType ( RouteType  type)
inline

Definiert in Zeile 339 der Datei Route.h.

Wird benutzt von mutabor::InputMidiPort::Load().

339  {
340  Type = type;
341  }
RouteType Type
Definition: Route.h:480
void CommonMidiOutputTest::setUp ( )

Definiert in Zeile 37 der Datei midicmnTest.cpp.

Benutzt CommonMidiOutputTest::box, mutabor::Box0, mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), CommonMidiOutputTest::guard, CommonMidiOutputTest::out, CommonMidiOutputTest::route und mutabor::CurrentTimer::UseRealtime().

38 {
39 // change DEBUGA to DEBUG in case you need the debug output
40 #ifdef DEBUG
41 // debugFlags::flags.timer = true;
42 // debugFlags::flags.midiio = true;
43 #endif
44  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().empty());
45  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
46  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
47  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
50  connect(route, box);
51 
53  out = new midicmnOutputDevice(("Test"));
54  guard = out;
55 
57  route->SetOutputFrom (0);
58  route->SetOutputTo (15);
59  route->OutputAvoidDrumChannel (true);
60 }
mutabor::Route route
Definition: midicmnTest.h:133
static const listtype & GetBoxList()
Definition: Box.h:340
static const routeListType & GetRouteList()
Definition: Route.h:404
midicmnOutputDevice * out
Definition: midicmnTest.h:132
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:458
not for headers
Definition: midicmnTest.h:67
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
mutabor::Box box
Definition: midicmnTest.h:134
mutabor::OutputDevice guard
Definition: midicmnTest.h:131
static Box Create(int type, int id=NewBox)
Definition: Box.h:899
static const listtype & GetDeviceList()
Definition: Device.h:752
CurrentTimer CurrentTime
Definition: timing.cpp:43
static Route Create()
Creates a generic route.
Definition: Route.h:595
void CommonMidiInputTest::setUp ( )

Definiert in Zeile 544 der Datei midicmnTest.cpp.

Benutzt CommonMidiInputTest::box, mutabor::Box0, mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), CommonMidiInputTest::guard, CommonMidiInputTest::in, CommonMidiInputTest::out, CommonMidiInputTest::outguard, CommonMidiInputTest::route und mutabor::CurrentTimer::UseRealtime().

545 {
546 // change DEBUGA to DEBUG in case you need the debug input
547 #ifdef DEBUG
548 // mutabor::mutabor_debug_flags.timer = true;
549 // mutabor::mutabor_debug_flags.midiio = true;
550 #endif
551  std::clog << "Running setUp()" << std::endl;
552 
553  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().empty());
554  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
555  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
556  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
557 
560  connect(route, box);
561 
563  in = new midicmnInputDevice(("Test"));
564  guard = in;
565  out = new midicmnOutputDevice(("Test"));
566  outguard = out;
567 
570  route->SetOutputFrom (0);
571  route->SetOutputTo (15);
572  route->OutputAvoidDrumChannel (true);
573 }
midicmnInputDevice * in
Definition: midicmnTest.h:211
mutabor::OutputDevice outguard
Definition: midicmnTest.h:209
static const listtype & GetBoxList()
Definition: Box.h:340
static const routeListType & GetRouteList()
Definition: Route.h:404
mutabor::InputDevice guard
Definition: midicmnTest.h:208
midicmnOutputDevice * out
Definition: midicmnTest.h:210
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:458
not for headers
Definition: midicmnTest.h:67
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
mutabor::Route route
Definition: midicmnTest.h:212
static Box Create(int type, int id=NewBox)
Definition: Box.h:899
static const listtype & GetDeviceList()
Definition: Device.h:752
CurrentTimer CurrentTime
Definition: timing.cpp:43
mutabor::Box box
Definition: midicmnTest.h:213
static Route Create()
Creates a generic route.
Definition: Route.h:595
void OutputMidiFileTest::setUp ( )

Definiert in Zeile 4798 der Datei DevMidFTest.cpp.

Benutzt OutputMidiFileTest::box, mutabor::Box0, mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::DeviceFactory::CreateOutput(), mutabor::CurrentTime, mutabor::DTMidiFile, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), OutputMidiFileTest::guard, OutputMidiFileTest::out, OutputMidiFileTest::route, mutabor::CommonMidiOutput< T, D >::SetBendingRange(), mutabor::OutputMidiFile::SetName() und mutabor::CurrentTimer::UseRealtime().

4799 {
4800 // change DEBUGA to DEBUG in case you need the debug output
4801 #ifdef DEBUGA
4802 // mutabor_debug_flags.timer = true;
4803 // mutabor_debug_flags.midiio = true;
4804 // mutabor_debug_flags.midifile = true;
4805 #else
4806 #ifdef DEBUG
4807 // mutabor_debug_flags.timer = false;
4808 // mutabor_debug_flags.midiio = false;
4809 // mutabor_debug_flags.midifile = false;
4810 #endif
4811 #endif
4812 // std::clog << "Running setUp()" << std::endl;
4813 
4814  // input device is already configured
4815  CPPUNIT_ASSERT(!mutabor::InputDeviceClass::GetDeviceList().size() == 1);
4816  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
4817  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
4818  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
4819 
4822  connect(route, box);
4823 
4826  out = static_cast<mutabor::OutputMidiFile *>(guard.get());
4827  out->SetName(("test_output.mid"));
4828  out->SetBendingRange(2);
4829  //out = new midicmnOutputDevice(3,("Test"));
4830 
4831  connect(route, guard);
4832  route->SetOutputFrom (0);
4833  route->SetOutputTo (15);
4834  route->OutputAvoidDrumChannel (true);
4835 }
static OutputDevice CreateOutput(int type, const std::string &name="", MutaborModeType mode=DeviceStop, int id=-1)
Definition: Device.h:1364
static const listtype & GetBoxList()
Definition: Box.h:340
static const routeListType & GetRouteList()
Definition: Route.h:404
mutabor::OutputDevice guard
Definition: DevMidFTest.h:238
mutabor::OutputMidiFile * out
Definition: DevMidFTest.h:239
mutabor::Route route
Definition: DevMidFTest.h:240
virtual void SetName(const std::string &s)
Definition: DevMidF.h:601
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:458
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
void SetBendingRange(int br)
Definition: midicmn.h:552
static Box Create(int type, int id=NewBox)
Definition: Box.h:899
static const listtype & GetDeviceList()
Definition: Device.h:752
CurrentTimer CurrentTime
Definition: timing.cpp:43
mutabor::Box box
Definition: DevMidFTest.h:241
static Route Create()
Creates a generic route.
Definition: Route.h:595
template<class I , class O , class B >
void mutabor::TRouteClass< I, O, B >::setUserData ( void *  data)
protectedvirtual

Definiert in Zeile 128 der Datei Route.cpp.

129  {
130  userdata = data;
131  }
virtual void mutabor::Device::setUserData ( void *  data)
inlineprotectedvirtual

Definiert in Zeile 666 der Datei Device.h.

Benutzt mutabor::Device::userdata.

666  {
667  userdata = data;
668  }
void * userdata
Definition: Device.h:676
void mutabor::InputDeviceClass::SilenceKeys ( bool  remove)
inline

Definiert in Zeile 1300 der Datei Device.h.

Benutzt mutabor::InputDeviceClass::DoSilenceKeys() und mutabor::InputDeviceClass::write_lock.

Wird benutzt von mutabor::CommonFileInputDevice::ThreadPlay().

1300  {
1301  ScopedLock lock(write_lock);
1302  DoSilenceKeys(remove);
1303  }
wxMutexLocker ScopedLock
Definition: thread.h:57
void DoSilenceKeys(bool remove)
Definition: Device.cpp:353
int StartSep ( )

Definiert in Zeile 547 der Datei GIS.cpp.

Benutzt Current und DEBUGLOG2.

Wird benutzt von GspParse().

548 {
549  DEBUGLOG2(gmnfile,("saving Sep %s"),Sep.c_str());
550  *Current = new GisToken(Sep, 0);
551  Current = &((*Current)->Next);
552  return 0;
553 }
Definition: GIS.h:116
std::string Sep
Definition: GSP.cpp:39
GisToken ** Current
Definition: GIS.cpp:107
#define DEBUGLOG2(level,...)
Definition: debug.h:241
virtual void mutabor::Device::Stop ( )
inlinevirtual
virtual void mutabor::InputDeviceClass::Stop ( )
inlinevirtual

Stop playback or recording of the device.

Erneute Implementation von mutabor::Device.

Erneute Implementation in mutabor::InputMidiFile, mutabor::InputMidiPort, mutabor::InputGis, mutabor::CommonFileInputDevice, myDevice, myDevice, myDevice, myDevice, testCommonFileDeviceTimer und testCommonFileDeviceTimer.

Definiert in Zeile 1124 der Datei Device.h.

Benutzt DEFAULT_PANIC, mutabor::DeviceStop, mutabor::Device::Mode und mutabor::InputDeviceClass::Panic().

Wird benutzt von mutabor::InputDeviceClass::Close().

1124  {
1126  Mode = DeviceStop;
1127  }
enum MutaborModeType Mode
Definition: Device.h:652
#define DEFAULT_PANIC
Definition: MidiKern.h:322
void Panic(int type)
reset the device if requested
Definition: Device.cpp:433
void mutabor::BoxClass::StopAll ( )
static

Stop all boxes.

This resets the action traces of all boxes.

Zu beachten
Code should be taken from Stop()

Definiert in Zeile 505 der Datei Box.cpp.

Benutzt mutabor::CurrentTime, mutabor::InClose(), mutabor::OutClose() und mutabor::CurrentTimer::Stop().

Wird benutzt von mutaborGUI::MutFrame::DoStop().

505  {
509  CloseAll();
510  }
void OutClose()
Definition: Device.cpp:696
void Stop()
Dummy function for stopping the timer.
Definition: timing.h:505
void InClose()
Definition: Device.cpp:732
static void CloseAll()
Close all boxes.
Definition: Box.cpp:477
CurrentTimer CurrentTime
Definition: timing.cpp:43
static void mutabor::InputDeviceClass::StopAll ( )
inlinestatic

Stop all inupt devices.

Definiert in Zeile 1154 der Datei Device.h.

Benutzt mutabor::CommonTypedDeviceAPI< InputDeviceClass >::deviceList, mutabor::DevicePause, mutabor::DevicePlay und mutabor::InputDeviceClass::last_was_stop.

Wird benutzt von mutabor::InputMidiPort::Proceed().

1154  {
1155  for (listtype::iterator i = deviceList.begin();
1156  i != deviceList.end(); ++i) {
1157  if ( (*i)->GetMode() == DevicePlay
1158  || (*i)->GetMode() == DevicePause ) {
1159  (*i)->Stop();
1160  }
1161  }
1162  last_was_stop = true;
1163  }
static bool last_was_stop
Definition: Device.h:1316
int StrCmp ( const std::string &  s1,
const std::string &  s2 
)
inline

Definiert in Zeile 745 der Datei GIS_Head.cpp.

Wird benutzt von CmpNote().

746 {
747  return s1.compare(s2);
748 }
std::string StreamToHex ( std::istream &  buf)

Definiert in Zeile 356 der Datei debug.cpp.

Wird benutzt von OutputMidiFileTest::CheckOut().

357 {
358  std::ostringstream retval;
359  if (buf.bad())
360  return "";
361 
362  buf.seekg(0);
363 
364  int tmpchar = buf.get();
365  for (size_t i = 1 ; !buf.eof() ; i++) {
366  retval << " "
367  << std::hex << std::setfill('0')
368  << std::setw (2) << tmpchar
369  << " ";
370 
371  if (32 <= tmpchar && tmpchar < 127)
372  retval << (char)tmpchar;
373  else
374  retval << "·";
375 
376  tmpchar = buf.get();
377  if (buf.fail()) break;
378 
379  if (!(i % 16)) {
380  retval << "\n";
381  }
382  else if (!(i % 8)) {
383  retval << " ";
384  }
385  }
386  retval << "\n";
387  return retval.str();
388 }
int Tag ( const std::string &  tagName)

Definiert in Zeile 726 der Datei GIS.cpp.

Benutzt BuildTag(), DEBUGLOG2, Sep, TagMode, TagName und TagSep.

Wird benutzt von BeginRange(), BuildTag(), mutaborGUI::MutLogicWnd::CmMutTag(), DoParse(), EndRange() und ReadTag().

727 {
728  DEBUGLOG2(gmnfile,("\\%s"),tagName.c_str());
729 
730  if ( TagMode ) BuildTag();
731 
732  TagName = tagName;
733 
734  TagSep = Sep;
735 
736  TagMode = 1;
737 
738  return 0;
739 }
char TagMode
Definition: GIS.cpp:109
std::string Sep
Definition: GSP.cpp:39
int BuildTag()
Definition: GIS.cpp:530
std::string TagSep
Definition: GIS.cpp:111
std::string TagName
Definition: GIS.cpp:110
#define DEBUGLOG2(level,...)
Definition: debug.h:241
int TagParaInt ( long  i)

Definiert in Zeile 741 der Datei GIS.cpp.

Benutzt DEBUGLOG2, LastPara, GisToken::Next und Para.

Wird benutzt von ReadParaNumber().

742 {
743  DEBUGLOG2(gmnfile,("ParaInt: %ld"),i);
744  GisParaInt *p = new GisParaInt(i, Sep);
745 
746  if ( LastPara )
747  LastPara->Next = p;
748  else
749  Para = p;
750 
751  LastPara = p;
752 
753  return 0;
754 }
std::string Sep
Definition: GSP.cpp:39
GisToken * Para
Definition: GIS.cpp:112
GisToken * Next
Definition: GIS.h:120
GisToken * LastPara
Definition: GIS.cpp:112
#define DEBUGLOG2(level,...)
Definition: debug.h:241
int TagParaReal ( double  x)

Definiert in Zeile 756 der Datei GIS.cpp.

Benutzt DEBUGLOG2, LastPara, GisToken::Next und Para.

Wird benutzt von ReadParaNumber().

757 {
758  DEBUGLOG2(gmnfile,("ParaReal: %g"), x);
759  GisParaReal *p = new GisParaReal(x, Sep, 0);
760 
761  if ( LastPara )
762  LastPara->Next = p;
763  else
764  Para = p;
765 
766  LastPara = p;
767 
768  return 0;
769 }
std::string Sep
Definition: GSP.cpp:39
GisToken * Para
Definition: GIS.cpp:112
GisToken * Next
Definition: GIS.h:120
GisToken * LastPara
Definition: GIS.cpp:112
#define DEBUGLOG2(level,...)
Definition: debug.h:241
int TagParaStr ( const std::string &  s)

Definiert in Zeile 771 der Datei GIS.cpp.

Benutzt DEBUGLOG2, LastPara, GisToken::Next und Para.

Wird benutzt von ReadParaStr().

772 {
773  DEBUGLOG2(gmnfile,("ParaStr: %s"), s.c_str());
774  GisParaStr *p = new GisParaStr(s, Sep, 0);
775 
776  if ( LastPara )
777  LastPara->Next = p;
778  else
779  Para = p;
780 
781  LastPara = p;
782 
783  return 0;
784 }
std::string Sep
Definition: GSP.cpp:39
GisToken * Para
Definition: GIS.cpp:112
GisToken * Next
Definition: GIS.h:120
GisToken * LastPara
Definition: GIS.cpp:112
#define DEBUGLOG2(level,...)
Definition: debug.h:241
std::string& takesep ( )
inline

Definiert in Zeile 181 der Datei GSP.cpp.

Benutzt CurrentLine, CurrentPos, DEBUGLOG2 und Sep.

182 {
183  Sep += CurrentLine[CurrentPos++];
184  DEBUGLOG2(other,("New Sep: %s"), Sep.c_str());
185  return Sep;
186 }
std::string Sep
Definition: GSP.cpp:39
std::string CurrentLine
Definition: GSP_File.cpp:36
size_t CurrentPos
Definition: GSP_File.cpp:37
#define DEBUGLOG2(level,...)
Definition: debug.h:241
void CommonMidiOutputTest::tearDown ( )

Definiert in Zeile 62 der Datei midicmnTest.cpp.

Benutzt CommonMidiOutputTest::box, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), CommonMidiOutputTest::guard, CommonMidiOutputTest::out und CommonMidiOutputTest::route.

63 {
64  guard->Destroy();
65  route->Destroy();
66  out = NULL;
67  guard.reset();
68  route.reset();
69  box -> Destroy();
70  box.reset();
71 
72  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().empty());
73  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
74  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
75  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
76 #ifdef DEBUG
77 // mutabor::mutabor_debug_flags.timer = false;
78 // mutabor::mutabor_debug_flags.midiio = false;
79 #endif
80 }
mutabor::Route route
Definition: midicmnTest.h:133
static const listtype & GetBoxList()
Definition: Box.h:340
static const routeListType & GetRouteList()
Definition: Route.h:404
midicmnOutputDevice * out
Definition: midicmnTest.h:132
mutabor::Box box
Definition: midicmnTest.h:134
mutabor::OutputDevice guard
Definition: midicmnTest.h:131
static const listtype & GetDeviceList()
Definition: Device.h:752
void CommonMidiInputTest::tearDown ( )

Definiert in Zeile 575 der Datei midicmnTest.cpp.

Benutzt CommonMidiInputTest::box, mutabor::CommonTypedDeviceAPI< T, P, L >::Destroy(), CommonMidiInputTest::guard, CommonMidiInputTest::in, mutabor::mutabor_debug_flags, CommonMidiInputTest::out und CommonMidiInputTest::route.

576 {
577 
578  if (in) {
579  in->Destroy();
580  }
581  if(out)
582  out->Destroy();
583  if(route)
584  route->Destroy();
585  if (box)
586  box -> Destroy();
587  in = NULL;
588  out = NULL;
589  guard.reset();
590  route.reset();
591  box.reset();
592 #ifdef DEBUG
593 // mutabor::mutabor_debug_flags.timer = false;
594  mutabor::mutabor_debug_flags.midiio = false;
595 #endif
596 }
midicmnInputDevice * in
Definition: midicmnTest.h:211
struct mutabor_debug_flagtype mutabor_debug_flags
Definition: debug.cpp:73
mutabor::InputDevice guard
Definition: midicmnTest.h:208
virtual void Destroy()
Destroy the current object.
midicmnOutputDevice * out
Definition: midicmnTest.h:210
mutabor::Route route
Definition: midicmnTest.h:212
mutabor::Box box
Definition: midicmnTest.h:213
void OutputMidiFileTest::tearDown ( )

Definiert in Zeile 4837 der Datei DevMidFTest.cpp.

Benutzt OutputMidiFileTest::box, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), OutputMidiFileTest::guard, isDebugFlag, mutabor::mutabor_debug_flags, OutputMidiFileTest::out und OutputMidiFileTest::route.

4838 {
4839 #ifdef DEBUG
4840  isDebugFlag(timer) = false;
4841  mutabor::mutabor_debug_flags.midifile = false;
4842 #endif
4843  if (out)
4844  out -> Destroy();
4845  out = NULL;
4846  guard.reset();
4847  route -> Destroy();
4848  route.reset();
4849  box -> Destroy();
4850  box.reset();
4851 
4852  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().empty());
4853  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
4854  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
4855  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
4856 }
struct mutabor_debug_flagtype mutabor_debug_flags
Definition: debug.cpp:73
static const listtype & GetBoxList()
Definition: Box.h:340
static const routeListType & GetRouteList()
Definition: Route.h:404
mutabor::OutputDevice guard
Definition: DevMidFTest.h:238
mutabor::OutputMidiFile * out
Definition: DevMidFTest.h:239
mutabor::Route route
Definition: DevMidFTest.h:240
#define isDebugFlag(level)
Definition: debug.h:133
static const listtype & GetDeviceList()
Definition: Device.h:752
mutabor::Box box
Definition: DevMidFTest.h:241
void InputMidiFileTest::testAfterTouch ( )

Definiert in Zeile 5657 der Datei DevMidFTest.cpp.

Benutzt mutabor::InputDeviceClass::BatchPlay(), mutabor::Box0, midicmnOutputDevice::Check(), mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), InputMidiFileTest::in, mutabor::initialize_box_data(), mutabor::CommonMidiOutput< T, D >::SetBendingRange() und mutabor::CurrentTimer::UseRealtime().

5658 {
5659 #ifdef DEBUG
5660 // mutabor::mutabor_debug_flags.timer = true;
5661 // mutabor::mutabor_debug_flags.midiio = true;
5662 // mutabor::mutabor_debug_flags.midifile = true;
5663 #endif
5664 
5665  // input device is set up during setUp
5666  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().size() == 1);
5667  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
5668  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
5669  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
5670 
5672  midicmnOutputDevice * out;
5673  mutabor::ScopedBox box(NULL);
5674  mutabor::ScopedRoute route;
5676 
5679  connect(route,box);
5681 
5682  std::string name = srcdir;
5683  name += ("/midiin.mut");
5684 
5685 
5686  std::ifstream file(name.c_str());
5687  CPPUNIT_ASSERT(file.is_open());
5688  file.seekg(0, std::ios::end);
5689  std::streampos length = file.tellg();
5690  file.seekg(0, std::ios::beg);
5691  char * logic_string = (char *) malloc((size_t)length+1);
5692  CPPUNIT_ASSERT(file.read(logic_string, length).gcount() == length);
5693  logic_string[length] = 0;
5694 
5695  MyCompileCallback callback;
5696  CPPUNIT_ASSERT(box->Compile(&callback, logic_string));
5697 
5698  free(logic_string);
5699  logic_string = NULL;
5700 
5701  route->SetActive(true);
5702 
5703 
5705  out = new midicmnOutputDevice(("Test"));
5706  out->SetBendingRange(2);
5707  //out = new midicmnOutputDevice(3,("Test"));
5708  guard = out;
5709 
5710  connect(route,guard);
5711  route->SetOutputFrom (0);
5712  route->SetOutputTo (15);
5713  route->OutputAvoidDrumChannel (true);
5714 
5715  connect(route, in);
5716 
5717  CPPUNIT_ASSERT( in );
5718  in -> SetName(SRCDIR "/aftertouch.mid");
5719 
5720 
5721  // First check: Input device provides the correct delta times
5724 
5725 // in -> Play(wxTHREAD_JOINABLE);
5727 
5728  CPPUNIT_ASSERT(out->Check(("\
5729 0 Opened...\n\
5730 0 0: e0 00 40\n\
5731 0 0: b0 7a 00\n\
5732 0 0: b0 7d 00\n\
5733 0 0: b0 7f 00\n\
5734 0 0: b0 65 00\n\
5735 0 0: b0 64 00\n\
5736 0 0: b0 06 02\n\
5737 0 0: b0 26 00\n\
5738 0 1: e1 00 40\n\
5739 0 1: b1 7a 00\n\
5740 0 1: b1 7d 00\n\
5741 0 1: b1 7f 00\n\
5742 0 1: b1 65 00\n\
5743 0 1: b1 64 00\n\
5744 0 1: b1 06 02\n\
5745 0 1: b1 26 00\n\
5746 0 2: e2 00 40\n\
5747 0 2: b2 7a 00\n\
5748 0 2: b2 7d 00\n\
5749 0 2: b2 7f 00\n\
5750 0 2: b2 65 00\n\
5751 0 2: b2 64 00\n\
5752 0 2: b2 06 02\n\
5753 0 2: b2 26 00\n\
5754 0 3: e3 00 40\n\
5755 0 3: b3 7a 00\n\
5756 0 3: b3 7d 00\n\
5757 0 3: b3 7f 00\n\
5758 0 3: b3 65 00\n\
5759 0 3: b3 64 00\n\
5760 0 3: b3 06 02\n\
5761 0 3: b3 26 00\n\
5762 0 4: e4 00 40\n\
5763 0 4: b4 7a 00\n\
5764 0 4: b4 7d 00\n\
5765 0 4: b4 7f 00\n\
5766 0 4: b4 65 00\n\
5767 0 4: b4 64 00\n\
5768 0 4: b4 06 02\n\
5769 0 4: b4 26 00\n\
5770 0 5: e5 00 40\n\
5771 0 5: b5 7a 00\n\
5772 0 5: b5 7d 00\n\
5773 0 5: b5 7f 00\n\
5774 0 5: b5 65 00\n\
5775 0 5: b5 64 00\n\
5776 0 5: b5 06 02\n\
5777 0 5: b5 26 00\n\
5778 0 6: e6 00 40\n\
5779 0 6: b6 7a 00\n\
5780 0 6: b6 7d 00\n\
5781 0 6: b6 7f 00\n\
5782 0 6: b6 65 00\n\
5783 0 6: b6 64 00\n\
5784 0 6: b6 06 02\n\
5785 0 6: b6 26 00\n\
5786 0 7: e7 00 40\n\
5787 0 7: b7 7a 00\n\
5788 0 7: b7 7d 00\n\
5789 0 7: b7 7f 00\n\
5790 0 7: b7 65 00\n\
5791 0 7: b7 64 00\n\
5792 0 7: b7 06 02\n\
5793 0 7: b7 26 00\n\
5794 0 8: e8 00 40\n\
5795 0 8: b8 7a 00\n\
5796 0 8: b8 7d 00\n\
5797 0 8: b8 7f 00\n\
5798 0 8: b8 65 00\n\
5799 0 8: b8 64 00\n\
5800 0 8: b8 06 02\n\
5801 0 8: b8 26 00\n\
5802 0 9: e9 00 40\n\
5803 0 9: b9 7a 00\n\
5804 0 9: b9 7d 00\n\
5805 0 9: b9 7f 00\n\
5806 0 9: b9 65 00\n\
5807 0 9: b9 64 00\n\
5808 0 9: b9 06 02\n\
5809 0 9: b9 26 00\n\
5810 0 10: ea 00 40\n\
5811 0 10: ba 7a 00\n\
5812 0 10: ba 7d 00\n\
5813 0 10: ba 7f 00\n\
5814 0 10: ba 65 00\n\
5815 0 10: ba 64 00\n\
5816 0 10: ba 06 02\n\
5817 0 10: ba 26 00\n\
5818 0 11: eb 00 40\n\
5819 0 11: bb 7a 00\n\
5820 0 11: bb 7d 00\n\
5821 0 11: bb 7f 00\n\
5822 0 11: bb 65 00\n\
5823 0 11: bb 64 00\n\
5824 0 11: bb 06 02\n\
5825 0 11: bb 26 00\n\
5826 0 12: ec 00 40\n\
5827 0 12: bc 7a 00\n\
5828 0 12: bc 7d 00\n\
5829 0 12: bc 7f 00\n\
5830 0 12: bc 65 00\n\
5831 0 12: bc 64 00\n\
5832 0 12: bc 06 02\n\
5833 0 12: bc 26 00\n\
5834 0 13: ed 00 40\n\
5835 0 13: bd 7a 00\n\
5836 0 13: bd 7d 00\n\
5837 0 13: bd 7f 00\n\
5838 0 13: bd 65 00\n\
5839 0 13: bd 64 00\n\
5840 0 13: bd 06 02\n\
5841 0 13: bd 26 00\n\
5842 0 14: ee 00 40\n\
5843 0 14: be 7a 00\n\
5844 0 14: be 7d 00\n\
5845 0 14: be 7f 00\n\
5846 0 14: be 65 00\n\
5847 0 14: be 64 00\n\
5848 0 14: be 06 02\n\
5849 0 14: be 26 00\n\
5850 0 15: ef 00 40\n\
5851 0 15: bf 7a 00\n\
5852 0 15: bf 7d 00\n\
5853 0 15: bf 7f 00\n\
5854 0 15: bf 65 00\n\
5855 0 15: bf 64 00\n\
5856 0 15: bf 06 02\n\
5857 0 15: bf 26 00\n\
5858 0 0: 90 3c 7f\n\
5859 1 0: a0 3c 08\n\
5860 200 1: 91 3c 7f\n\
5861 202 0: d0 0c\n\
5862 202 1: d1 0c\n\
5863 500 0: 80 3c 40\n\
5864 501 1: d1 0d\n\
5865 502 1: a1 3c 0f\n\
5866 540 1: 81 3c 40\n\
5867 546 ...closed.\n\
5868 "),__LINE__,(__FILE__)));
5869 
5870 }
mutabor::InputDevice in
Definition: DevMidFTest.h:84
void initialize_box_data()
Definition: Box.cpp:1057
static const listtype & GetBoxList()
Definition: Box.h:340
static const routeListType & GetRouteList()
Definition: Route.h:404
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:458
not for headers
Definition: midicmnTest.h:67
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
void SetBendingRange(int br)
Definition: midicmn.h:552
bool Check(std::string s, int line=-1, std::string filename=(__FILE__))
Definition: midicmnTest.h:88
static Box Create(int type, int id=NewBox)
Definition: Box.h:899
static const listtype & GetDeviceList()
Definition: Device.h:752
static bool BatchPlay()
Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex...
Definition: Device.cpp:446
CurrentTimer CurrentTime
Definition: timing.cpp:43
static Route Create()
Creates a generic route.
Definition: Route.h:595
void InputMidiFileTest::testAllControllerOff ( )

Definiert in Zeile 1489 der Datei DevMidFTest.cpp.

Benutzt mutabor::InputDeviceClass::BatchPlay(), mutabor::Box0, midicmnOutputDevice::Check(), mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), InputMidiFileTest::in, mutabor::CommonMidiOutput< T, D >::SetBendingRange() und mutabor::CurrentTimer::UseRealtime().

1490 {
1491 #ifdef DEBUG
1492 // mutabor_debug_flags.timer = true;
1493 // mutabor_debug_flags.midiio = true;
1494 // mutabor_debug_flags.midifile = true;
1495 #endif
1496 
1497  // input device is set up during setUp
1498  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().size() == 1);
1499  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
1500  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
1501  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
1502 
1504  midicmnOutputDevice * out;
1505  mutabor::ScopedBox box(NULL);
1506  mutabor::ScopedRoute route;
1508 
1511  connect(route,box);
1512 
1514  out = new midicmnOutputDevice(("Test"));
1515  out->SetBendingRange(2);
1516  //out = new midicmnOutputDevice(3,("Test"));
1517  guard = out;
1518 
1519  connect(route,guard);
1520  route->SetOutputFrom (0);
1521  route->SetOutputTo (15);
1522  route->OutputAvoidDrumChannel (true);
1523 
1524  connect(route, in);
1525 
1526  CPPUNIT_ASSERT( in );
1527  in -> SetName(SRCDIR "/all_controller_off.mid");
1528 
1529 
1530  // First check: Input device provides the correct delta times
1533 
1534 // in -> Play(wxTHREAD_JOINABLE);
1536 
1537  CPPUNIT_ASSERT(out->Check(("\
1538 0 Opened...\n\
1539 0 0: e0 00 40\n\
1540 0 0: b0 7a 00\n\
1541 0 0: b0 7d 00\n\
1542 0 0: b0 7f 00\n\
1543 0 0: b0 65 00\n\
1544 0 0: b0 64 00\n\
1545 0 0: b0 06 02\n\
1546 0 0: b0 26 00\n\
1547 0 1: e1 00 40\n\
1548 0 1: b1 7a 00\n\
1549 0 1: b1 7d 00\n\
1550 0 1: b1 7f 00\n\
1551 0 1: b1 65 00\n\
1552 0 1: b1 64 00\n\
1553 0 1: b1 06 02\n\
1554 0 1: b1 26 00\n\
1555 0 2: e2 00 40\n\
1556 0 2: b2 7a 00\n\
1557 0 2: b2 7d 00\n\
1558 0 2: b2 7f 00\n\
1559 0 2: b2 65 00\n\
1560 0 2: b2 64 00\n\
1561 0 2: b2 06 02\n\
1562 0 2: b2 26 00\n\
1563 0 3: e3 00 40\n\
1564 0 3: b3 7a 00\n\
1565 0 3: b3 7d 00\n\
1566 0 3: b3 7f 00\n\
1567 0 3: b3 65 00\n\
1568 0 3: b3 64 00\n\
1569 0 3: b3 06 02\n\
1570 0 3: b3 26 00\n\
1571 0 4: e4 00 40\n\
1572 0 4: b4 7a 00\n\
1573 0 4: b4 7d 00\n\
1574 0 4: b4 7f 00\n\
1575 0 4: b4 65 00\n\
1576 0 4: b4 64 00\n\
1577 0 4: b4 06 02\n\
1578 0 4: b4 26 00\n\
1579 0 5: e5 00 40\n\
1580 0 5: b5 7a 00\n\
1581 0 5: b5 7d 00\n\
1582 0 5: b5 7f 00\n\
1583 0 5: b5 65 00\n\
1584 0 5: b5 64 00\n\
1585 0 5: b5 06 02\n\
1586 0 5: b5 26 00\n\
1587 0 6: e6 00 40\n\
1588 0 6: b6 7a 00\n\
1589 0 6: b6 7d 00\n\
1590 0 6: b6 7f 00\n\
1591 0 6: b6 65 00\n\
1592 0 6: b6 64 00\n\
1593 0 6: b6 06 02\n\
1594 0 6: b6 26 00\n\
1595 0 7: e7 00 40\n\
1596 0 7: b7 7a 00\n\
1597 0 7: b7 7d 00\n\
1598 0 7: b7 7f 00\n\
1599 0 7: b7 65 00\n\
1600 0 7: b7 64 00\n\
1601 0 7: b7 06 02\n\
1602 0 7: b7 26 00\n\
1603 0 8: e8 00 40\n\
1604 0 8: b8 7a 00\n\
1605 0 8: b8 7d 00\n\
1606 0 8: b8 7f 00\n\
1607 0 8: b8 65 00\n\
1608 0 8: b8 64 00\n\
1609 0 8: b8 06 02\n\
1610 0 8: b8 26 00\n\
1611 0 9: e9 00 40\n\
1612 0 9: b9 7a 00\n\
1613 0 9: b9 7d 00\n\
1614 0 9: b9 7f 00\n\
1615 0 9: b9 65 00\n\
1616 0 9: b9 64 00\n\
1617 0 9: b9 06 02\n\
1618 0 9: b9 26 00\n\
1619 0 10: ea 00 40\n\
1620 0 10: ba 7a 00\n\
1621 0 10: ba 7d 00\n\
1622 0 10: ba 7f 00\n\
1623 0 10: ba 65 00\n\
1624 0 10: ba 64 00\n\
1625 0 10: ba 06 02\n\
1626 0 10: ba 26 00\n\
1627 0 11: eb 00 40\n\
1628 0 11: bb 7a 00\n\
1629 0 11: bb 7d 00\n\
1630 0 11: bb 7f 00\n\
1631 0 11: bb 65 00\n\
1632 0 11: bb 64 00\n\
1633 0 11: bb 06 02\n\
1634 0 11: bb 26 00\n\
1635 0 12: ec 00 40\n\
1636 0 12: bc 7a 00\n\
1637 0 12: bc 7d 00\n\
1638 0 12: bc 7f 00\n\
1639 0 12: bc 65 00\n\
1640 0 12: bc 64 00\n\
1641 0 12: bc 06 02\n\
1642 0 12: bc 26 00\n\
1643 0 13: ed 00 40\n\
1644 0 13: bd 7a 00\n\
1645 0 13: bd 7d 00\n\
1646 0 13: bd 7f 00\n\
1647 0 13: bd 65 00\n\
1648 0 13: bd 64 00\n\
1649 0 13: bd 06 02\n\
1650 0 13: bd 26 00\n\
1651 0 14: ee 00 40\n\
1652 0 14: be 7a 00\n\
1653 0 14: be 7d 00\n\
1654 0 14: be 7f 00\n\
1655 0 14: be 65 00\n\
1656 0 14: be 64 00\n\
1657 0 14: be 06 02\n\
1658 0 14: be 26 00\n\
1659 0 15: ef 00 40\n\
1660 0 15: bf 7a 00\n\
1661 0 15: bf 7d 00\n\
1662 0 15: bf 7f 00\n\
1663 0 15: bf 65 00\n\
1664 0 15: bf 64 00\n\
1665 0 15: bf 06 02\n\
1666 0 15: bf 26 00\n\
1667 0 0: 90 3c 7f\n\
1668 1 0: b0 00 37\n\
1669 16 0: b0 03 14\n\
1670 29 0: b0 07 3a\n\
1671 46 0: b0 0b 05\n\
1672 101 0: b0 19 54\n\
1673 489 0: b0 40 00\n\
1674 489 0: b0 42 00\n\
1675 489 0: b0 44 00\n\
1676 489 0: b0 45 00\n\
1677 489 0: 80 3c 7f\n\
1678 490 1: b1 00 37\n\
1679 490 1: 91 40 3f\n\
1680 490 1: b1 07 3a\n\
1681 490 1: b1 03 00\n\
1682 490 1: b1 0b 7f\n\
1683 490 1: b1 19 00\n\
1684 492 1: 81 40 3e\n\
1685 546 ...closed.\n\
1686 "),__LINE__,(__FILE__)));
1687 
1688 }
mutabor::InputDevice in
Definition: DevMidFTest.h:84
static const listtype & GetBoxList()
Definition: Box.h:340
static const routeListType & GetRouteList()
Definition: Route.h:404
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:458
not for headers
Definition: midicmnTest.h:67
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
void SetBendingRange(int br)
Definition: midicmn.h:552
bool Check(std::string s, int line=-1, std::string filename=(__FILE__))
Definition: midicmnTest.h:88
static Box Create(int type, int id=NewBox)
Definition: Box.h:899
static const listtype & GetDeviceList()
Definition: Device.h:752
static bool BatchPlay()
Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex...
Definition: Device.cpp:446
CurrentTimer CurrentTime
Definition: timing.cpp:43
static Route Create()
Creates a generic route.
Definition: Route.h:595
void InputMidiFileTest::testBankSelect ( )

Definiert in Zeile 1261 der Datei DevMidFTest.cpp.

Benutzt mutabor::InputDeviceClass::BatchPlay(), mutabor::Box0, midicmnOutputDevice::Check(), mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), InputMidiFileTest::in, mutabor::CommonMidiOutput< T, D >::SetBendingRange() und mutabor::CurrentTimer::UseRealtime().

1262 {
1263 #ifdef DEBUG
1264 // mutabor_debug_flags.timer = true;
1265 // mutabor_debug_flags.midiio = true;
1266 // mutabor_debug_flags.midifile = true;
1267 #endif
1268 
1269  // input device is set up during setUp
1270  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().size() == 1);
1271  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
1272  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
1273  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
1274 
1276  midicmnOutputDevice * out;
1277  mutabor::ScopedBox box(NULL);
1278  mutabor::ScopedRoute route;
1280 
1283  connect(route,box);
1284 
1286  out = new midicmnOutputDevice(("Test"));
1287  out->SetBendingRange(2);
1288  //out = new midicmnOutputDevice(3,("Test"));
1289  guard = out;
1290 
1291  connect(route,guard);
1292  route->SetOutputFrom (0);
1293  route->SetOutputTo (15);
1294  route->OutputAvoidDrumChannel (true);
1295 
1296  connect(route, in);
1297 
1298  CPPUNIT_ASSERT( in );
1299  in -> SetName(SRCDIR "/bank_select.mid");
1300 
1301 
1302  // First check: Input device provides the correct delta times
1305 
1306 // in -> Play(wxTHREAD_JOINABLE);
1308 
1309  CPPUNIT_ASSERT(out->Check(("\
1310 0 Opened...\n\
1311 0 0: e0 00 40\n\
1312 0 0: b0 7a 00\n\
1313 0 0: b0 7d 00\n\
1314 0 0: b0 7f 00\n\
1315 0 0: b0 65 00\n\
1316 0 0: b0 64 00\n\
1317 0 0: b0 06 02\n\
1318 0 0: b0 26 00\n\
1319 0 1: e1 00 40\n\
1320 0 1: b1 7a 00\n\
1321 0 1: b1 7d 00\n\
1322 0 1: b1 7f 00\n\
1323 0 1: b1 65 00\n\
1324 0 1: b1 64 00\n\
1325 0 1: b1 06 02\n\
1326 0 1: b1 26 00\n\
1327 0 2: e2 00 40\n\
1328 0 2: b2 7a 00\n\
1329 0 2: b2 7d 00\n\
1330 0 2: b2 7f 00\n\
1331 0 2: b2 65 00\n\
1332 0 2: b2 64 00\n\
1333 0 2: b2 06 02\n\
1334 0 2: b2 26 00\n\
1335 0 3: e3 00 40\n\
1336 0 3: b3 7a 00\n\
1337 0 3: b3 7d 00\n\
1338 0 3: b3 7f 00\n\
1339 0 3: b3 65 00\n\
1340 0 3: b3 64 00\n\
1341 0 3: b3 06 02\n\
1342 0 3: b3 26 00\n\
1343 0 4: e4 00 40\n\
1344 0 4: b4 7a 00\n\
1345 0 4: b4 7d 00\n\
1346 0 4: b4 7f 00\n\
1347 0 4: b4 65 00\n\
1348 0 4: b4 64 00\n\
1349 0 4: b4 06 02\n\
1350 0 4: b4 26 00\n\
1351 0 5: e5 00 40\n\
1352 0 5: b5 7a 00\n\
1353 0 5: b5 7d 00\n\
1354 0 5: b5 7f 00\n\
1355 0 5: b5 65 00\n\
1356 0 5: b5 64 00\n\
1357 0 5: b5 06 02\n\
1358 0 5: b5 26 00\n\
1359 0 6: e6 00 40\n\
1360 0 6: b6 7a 00\n\
1361 0 6: b6 7d 00\n\
1362 0 6: b6 7f 00\n\
1363 0 6: b6 65 00\n\
1364 0 6: b6 64 00\n\
1365 0 6: b6 06 02\n\
1366 0 6: b6 26 00\n\
1367 0 7: e7 00 40\n\
1368 0 7: b7 7a 00\n\
1369 0 7: b7 7d 00\n\
1370 0 7: b7 7f 00\n\
1371 0 7: b7 65 00\n\
1372 0 7: b7 64 00\n\
1373 0 7: b7 06 02\n\
1374 0 7: b7 26 00\n\
1375 0 8: e8 00 40\n\
1376 0 8: b8 7a 00\n\
1377 0 8: b8 7d 00\n\
1378 0 8: b8 7f 00\n\
1379 0 8: b8 65 00\n\
1380 0 8: b8 64 00\n\
1381 0 8: b8 06 02\n\
1382 0 8: b8 26 00\n\
1383 0 9: e9 00 40\n\
1384 0 9: b9 7a 00\n\
1385 0 9: b9 7d 00\n\
1386 0 9: b9 7f 00\n\
1387 0 9: b9 65 00\n\
1388 0 9: b9 64 00\n\
1389 0 9: b9 06 02\n\
1390 0 9: b9 26 00\n\
1391 0 10: ea 00 40\n\
1392 0 10: ba 7a 00\n\
1393 0 10: ba 7d 00\n\
1394 0 10: ba 7f 00\n\
1395 0 10: ba 65 00\n\
1396 0 10: ba 64 00\n\
1397 0 10: ba 06 02\n\
1398 0 10: ba 26 00\n\
1399 0 11: eb 00 40\n\
1400 0 11: bb 7a 00\n\
1401 0 11: bb 7d 00\n\
1402 0 11: bb 7f 00\n\
1403 0 11: bb 65 00\n\
1404 0 11: bb 64 00\n\
1405 0 11: bb 06 02\n\
1406 0 11: bb 26 00\n\
1407 0 12: ec 00 40\n\
1408 0 12: bc 7a 00\n\
1409 0 12: bc 7d 00\n\
1410 0 12: bc 7f 00\n\
1411 0 12: bc 65 00\n\
1412 0 12: bc 64 00\n\
1413 0 12: bc 06 02\n\
1414 0 12: bc 26 00\n\
1415 0 13: ed 00 40\n\
1416 0 13: bd 7a 00\n\
1417 0 13: bd 7d 00\n\
1418 0 13: bd 7f 00\n\
1419 0 13: bd 65 00\n\
1420 0 13: bd 64 00\n\
1421 0 13: bd 06 02\n\
1422 0 13: bd 26 00\n\
1423 0 14: ee 00 40\n\
1424 0 14: be 7a 00\n\
1425 0 14: be 7d 00\n\
1426 0 14: be 7f 00\n\
1427 0 14: be 65 00\n\
1428 0 14: be 64 00\n\
1429 0 14: be 06 02\n\
1430 0 14: be 26 00\n\
1431 0 15: ef 00 40\n\
1432 0 15: bf 7a 00\n\
1433 0 15: bf 7d 00\n\
1434 0 15: bf 7f 00\n\
1435 0 15: bf 65 00\n\
1436 0 15: bf 64 00\n\
1437 0 15: bf 06 02\n\
1438 0 15: bf 26 00\n\
1439 0 0: 90 3c 7f\n\
1440 1 0: b0 00 37\n\
1441 3 1: b1 00 37\n\
1442 3 1: 91 40 4f\n\
1443 4 0: b0 00 6e\n\
1444 4 1: b1 00 6e\n\
1445 5 1: 81 40 4e\n\
1446 6 2: b2 00 6e\n\
1447 6 2: 92 40 4f\n\
1448 7 0: b0 00 00\n\
1449 7 2: b2 00 00\n\
1450 8 2: 82 40 4e\n\
1451 8 3: b3 00 00\n\
1452 8 3: 93 40 4f\n\
1453 10 0: b0 00 25\n\
1454 10 3: b3 00 25\n\
1455 11 3: 83 40 4e\n\
1456 12 4: b4 00 25\n\
1457 12 4: 94 40 4f\n\
1458 13 0: b0 20 57\n\
1459 13 4: b4 20 57\n\
1460 14 4: 84 40 4e\n\
1461 15 5: b5 00 25\n\
1462 15 5: b5 20 57\n\
1463 15 5: 95 40 4f\n\
1464 16 0: b0 20 0e\n\
1465 16 5: b5 20 0e\n\
1466 17 5: 85 40 4e\n\
1467 18 6: b6 00 25\n\
1468 18 6: b6 20 0e\n\
1469 18 6: 96 40 4f\n\
1470 19 0: b0 20 00\n\
1471 19 6: b6 20 00\n\
1472 20 6: 86 40 4e\n\
1473 21 7: b7 00 25\n\
1474 21 7: b7 20 00\n\
1475 21 7: 97 40 4f\n\
1476 22 0: b0 20 45\n\
1477 22 7: b7 20 45\n\
1478 23 7: 87 40 4e\n\
1479 24 8: b8 00 25\n\
1480 24 8: b8 20 45\n\
1481 24 8: 98 40 4f\n\
1482 509 0: 80 3c 40\n\
1483 509 8: 88 40 40\n\
1484 509 ...closed.\n\
1485 "),__LINE__,(__FILE__)));
1486 
1487 }
mutabor::InputDevice in
Definition: DevMidFTest.h:84
static const listtype & GetBoxList()
Definition: Box.h:340
static const routeListType & GetRouteList()
Definition: Route.h:404
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:458
not for headers
Definition: midicmnTest.h:67
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
void SetBendingRange(int br)
Definition: midicmn.h:552
bool Check(std::string s, int line=-1, std::string filename=(__FILE__))
Definition: midicmnTest.h:88
static Box Create(int type, int id=NewBox)
Definition: Box.h:899
static const listtype & GetDeviceList()
Definition: Device.h:752
static bool BatchPlay()
Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex...
Definition: Device.cpp:446
CurrentTimer CurrentTime
Definition: timing.cpp:43
static Route Create()
Creates a generic route.
Definition: Route.h:595
void InputMidiFileTest::testBatchPlay1 ( )

Definiert in Zeile 65 der Datei DevMidFTest.cpp.

Benutzt mutabor::InputDeviceClass::BatchPlay(), mutabor::Box0, midicmnOutputDevice::Check(), mutabor::CommonMidiOutput< T, D >::Close(), mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), InputMidiFileTest::in, MUTABOR_NO_DELTA, mutint64, mutabor::CommonMidiOutput< T, D >::SetBendingRange() und mutabor::CurrentTimer::UseRealtime().

66 {
67 #ifdef DEBUG
68 // mutabor_debug_flags.timer = true;
69 // mutabor_debug_flags.midiio = true;
70 #endif
71 
72  // input device is set up during setUp
73  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().size()==1);
74  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
75  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
76  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
77 
79  midicmnOutputDevice * out;
80  mutabor::ScopedBox box(NULL);
83 
86  connect(route,box);
87 
89  out = new midicmnOutputDevice(("Test"));
90  out->SetBendingRange(2);
91  //out = new midicmnOutputDevice(3,("Test"));
92  guard = out;
93 
94  connect(route,guard);
95  route->SetOutputFrom (0);
96  route->SetOutputTo (15);
97  route->OutputAvoidDrumChannel (true);
98 
99  connect(route, in);
100 
101  CPPUNIT_ASSERT( in );
102  in -> SetName(SRCDIR "/midi1_source.mid");
103 
104 
105  // First check: Input device provides the correct delta times
106 
109 
110  CPPUNIT_ASSERT((out -> Open()));
111  CPPUNIT_ASSERT(box -> Open());
112  CPPUNIT_ASSERT((in -> Open()));
113  CPPUNIT_ASSERT(out->Check(("0 Opened...\n\
114 0 0: e0 00 40\n\
115 0 0: b0 7a 00\n\
116 0 0: b0 7d 00\n\
117 0 0: b0 7f 00\n\
118 0 0: b0 65 00\n\
119 0 0: b0 64 00\n\
120 0 0: b0 06 02\n\
121 0 0: b0 26 00\n\
122 0 1: e1 00 40\n\
123 0 1: b1 7a 00\n\
124 0 1: b1 7d 00\n\
125 0 1: b1 7f 00\n\
126 0 1: b1 65 00\n\
127 0 1: b1 64 00\n\
128 0 1: b1 06 02\n\
129 0 1: b1 26 00\n\
130 0 2: e2 00 40\n\
131 0 2: b2 7a 00\n\
132 0 2: b2 7d 00\n\
133 0 2: b2 7f 00\n\
134 0 2: b2 65 00\n\
135 0 2: b2 64 00\n\
136 0 2: b2 06 02\n\
137 0 2: b2 26 00\n\
138 0 3: e3 00 40\n\
139 0 3: b3 7a 00\n\
140 0 3: b3 7d 00\n\
141 0 3: b3 7f 00\n\
142 0 3: b3 65 00\n\
143 0 3: b3 64 00\n\
144 0 3: b3 06 02\n\
145 0 3: b3 26 00\n\
146 0 4: e4 00 40\n\
147 0 4: b4 7a 00\n\
148 0 4: b4 7d 00\n\
149 0 4: b4 7f 00\n\
150 0 4: b4 65 00\n\
151 0 4: b4 64 00\n\
152 0 4: b4 06 02\n\
153 0 4: b4 26 00\n\
154 0 5: e5 00 40\n\
155 0 5: b5 7a 00\n\
156 0 5: b5 7d 00\n\
157 0 5: b5 7f 00\n\
158 0 5: b5 65 00\n\
159 0 5: b5 64 00\n\
160 0 5: b5 06 02\n\
161 0 5: b5 26 00\n\
162 0 6: e6 00 40\n\
163 0 6: b6 7a 00\n\
164 0 6: b6 7d 00\n\
165 0 6: b6 7f 00\n\
166 0 6: b6 65 00\n\
167 0 6: b6 64 00\n\
168 0 6: b6 06 02\n\
169 0 6: b6 26 00\n\
170 0 7: e7 00 40\n\
171 0 7: b7 7a 00\n\
172 0 7: b7 7d 00\n\
173 0 7: b7 7f 00\n\
174 0 7: b7 65 00\n\
175 0 7: b7 64 00\n\
176 0 7: b7 06 02\n\
177 0 7: b7 26 00\n\
178 0 8: e8 00 40\n\
179 0 8: b8 7a 00\n\
180 0 8: b8 7d 00\n\
181 0 8: b8 7f 00\n\
182 0 8: b8 65 00\n\
183 0 8: b8 64 00\n\
184 0 8: b8 06 02\n\
185 0 8: b8 26 00\n\
186 0 9: e9 00 40\n\
187 0 9: b9 7a 00\n\
188 0 9: b9 7d 00\n\
189 0 9: b9 7f 00\n\
190 0 9: b9 65 00\n\
191 0 9: b9 64 00\n\
192 0 9: b9 06 02\n\
193 0 9: b9 26 00\n\
194 0 10: ea 00 40\n\
195 0 10: ba 7a 00\n\
196 0 10: ba 7d 00\n\
197 0 10: ba 7f 00\n\
198 0 10: ba 65 00\n\
199 0 10: ba 64 00\n\
200 0 10: ba 06 02\n\
201 0 10: ba 26 00\n\
202 0 11: eb 00 40\n\
203 0 11: bb 7a 00\n\
204 0 11: bb 7d 00\n\
205 0 11: bb 7f 00\n\
206 0 11: bb 65 00\n\
207 0 11: bb 64 00\n\
208 0 11: bb 06 02\n\
209 0 11: bb 26 00\n\
210 0 12: ec 00 40\n\
211 0 12: bc 7a 00\n\
212 0 12: bc 7d 00\n\
213 0 12: bc 7f 00\n\
214 0 12: bc 65 00\n\
215 0 12: bc 64 00\n\
216 0 12: bc 06 02\n\
217 0 12: bc 26 00\n\
218 0 13: ed 00 40\n\
219 0 13: bd 7a 00\n\
220 0 13: bd 7d 00\n\
221 0 13: bd 7f 00\n\
222 0 13: bd 65 00\n\
223 0 13: bd 64 00\n\
224 0 13: bd 06 02\n\
225 0 13: bd 26 00\n\
226 0 14: ee 00 40\n\
227 0 14: be 7a 00\n\
228 0 14: be 7d 00\n\
229 0 14: be 7f 00\n\
230 0 14: be 65 00\n\
231 0 14: be 64 00\n\
232 0 14: be 06 02\n\
233 0 14: be 26 00\n\
234 0 15: ef 00 40\n\
235 0 15: bf 7a 00\n\
236 0 15: bf 7d 00\n\
237 0 15: bf 7f 00\n\
238 0 15: bf 65 00\n\
239 0 15: bf 64 00\n\
240 0 15: bf 06 02\n\
241 0 15: bf 26 00\n"),__LINE__,(__FILE__)));
242 
243 // in -> Play(wxTHREAD_JOINABLE);
244 // mutabor::InputDeviceClass::BatchPlay();
245  in -> Play();
246  mutint64 delta = in -> PrepareNextEvent();
247  // hold pedal comes from the sustain parameter to the contstructor
248  CPPUNIT_ASSERT(out->Check(("\
249 0 0: c0 4f\n\
250 0 0: 90 3c 7f\n\
251 "),__LINE__,(__FILE__)));
252 
253  CPPUNIT_ASSERT(delta == 49920);
254  delta = in -> PrepareNextEvent();
255  CPPUNIT_ASSERT(out->Check(("\
256 0 1: c1 4f\n\
257 0 1: 91 40 1f\n\
258 "),__LINE__,(__FILE__)));
259  CPPUNIT_ASSERT(delta == 49920);
260  delta = in -> PrepareNextEvent();
261  CPPUNIT_ASSERT(out->Check(("\
262 0 1: 81 40 40\n\
263 0 2: c2 4f\n\
264 0 2: 92 43 3f\n\
265 "),__LINE__,(__FILE__)));
266  CPPUNIT_ASSERT(delta == 49920);
267  delta = in -> PrepareNextEvent();
268  CPPUNIT_ASSERT(out->Check(("\
269 0 2: 82 43 40\n\
270 0 3: c3 4f\n\
271 0 3: 93 34 7f\n\
272 "),__LINE__,(__FILE__)));
273  CPPUNIT_ASSERT(delta == 49920);
274  delta = in -> PrepareNextEvent();
275  CPPUNIT_ASSERT(out->Check(("0 3: 83 34 40\n"),__LINE__,(__FILE__)));
276  CPPUNIT_ASSERT(delta == 49920);
277  delta = in -> PrepareNextEvent();
278  CPPUNIT_ASSERT(out->Check(("0 0: 80 3c 7f\n"),__LINE__,(__FILE__)));
279  CPPUNIT_ASSERT(delta == MUTABOR_NO_DELTA);
280 
281  in->Close();
282  box->Close();
283  out->Close();
284  CPPUNIT_ASSERT(out->Check(("0 ...closed.\n"),__LINE__,(__FILE__)));
285 
286 
287 
288  // Second check: Output device gets the correct delta times
289 
291 
292 // in -> Play(wxTHREAD_JOINABLE);
294 
295  CPPUNIT_ASSERT(out->Check(("0 Opened...\n\
296 0 0: e0 00 40\n\
297 0 0: b0 7a 00\n\
298 0 0: b0 7d 00\n\
299 0 0: b0 7f 00\n\
300 0 0: b0 65 00\n\
301 0 0: b0 64 00\n\
302 0 0: b0 06 02\n\
303 0 0: b0 26 00\n\
304 0 1: e1 00 40\n\
305 0 1: b1 7a 00\n\
306 0 1: b1 7d 00\n\
307 0 1: b1 7f 00\n\
308 0 1: b1 65 00\n\
309 0 1: b1 64 00\n\
310 0 1: b1 06 02\n\
311 0 1: b1 26 00\n\
312 0 2: e2 00 40\n\
313 0 2: b2 7a 00\n\
314 0 2: b2 7d 00\n\
315 0 2: b2 7f 00\n\
316 0 2: b2 65 00\n\
317 0 2: b2 64 00\n\
318 0 2: b2 06 02\n\
319 0 2: b2 26 00\n\
320 0 3: e3 00 40\n\
321 0 3: b3 7a 00\n\
322 0 3: b3 7d 00\n\
323 0 3: b3 7f 00\n\
324 0 3: b3 65 00\n\
325 0 3: b3 64 00\n\
326 0 3: b3 06 02\n\
327 0 3: b3 26 00\n\
328 0 4: e4 00 40\n\
329 0 4: b4 7a 00\n\
330 0 4: b4 7d 00\n\
331 0 4: b4 7f 00\n\
332 0 4: b4 65 00\n\
333 0 4: b4 64 00\n\
334 0 4: b4 06 02\n\
335 0 4: b4 26 00\n\
336 0 5: e5 00 40\n\
337 0 5: b5 7a 00\n\
338 0 5: b5 7d 00\n\
339 0 5: b5 7f 00\n\
340 0 5: b5 65 00\n\
341 0 5: b5 64 00\n\
342 0 5: b5 06 02\n\
343 0 5: b5 26 00\n\
344 0 6: e6 00 40\n\
345 0 6: b6 7a 00\n\
346 0 6: b6 7d 00\n\
347 0 6: b6 7f 00\n\
348 0 6: b6 65 00\n\
349 0 6: b6 64 00\n\
350 0 6: b6 06 02\n\
351 0 6: b6 26 00\n\
352 0 7: e7 00 40\n\
353 0 7: b7 7a 00\n\
354 0 7: b7 7d 00\n\
355 0 7: b7 7f 00\n\
356 0 7: b7 65 00\n\
357 0 7: b7 64 00\n\
358 0 7: b7 06 02\n\
359 0 7: b7 26 00\n\
360 0 8: e8 00 40\n\
361 0 8: b8 7a 00\n\
362 0 8: b8 7d 00\n\
363 0 8: b8 7f 00\n\
364 0 8: b8 65 00\n\
365 0 8: b8 64 00\n\
366 0 8: b8 06 02\n\
367 0 8: b8 26 00\n\
368 0 9: e9 00 40\n\
369 0 9: b9 7a 00\n\
370 0 9: b9 7d 00\n\
371 0 9: b9 7f 00\n\
372 0 9: b9 65 00\n\
373 0 9: b9 64 00\n\
374 0 9: b9 06 02\n\
375 0 9: b9 26 00\n\
376 0 10: ea 00 40\n\
377 0 10: ba 7a 00\n\
378 0 10: ba 7d 00\n\
379 0 10: ba 7f 00\n\
380 0 10: ba 65 00\n\
381 0 10: ba 64 00\n\
382 0 10: ba 06 02\n\
383 0 10: ba 26 00\n\
384 0 11: eb 00 40\n\
385 0 11: bb 7a 00\n\
386 0 11: bb 7d 00\n\
387 0 11: bb 7f 00\n\
388 0 11: bb 65 00\n\
389 0 11: bb 64 00\n\
390 0 11: bb 06 02\n\
391 0 11: bb 26 00\n\
392 0 12: ec 00 40\n\
393 0 12: bc 7a 00\n\
394 0 12: bc 7d 00\n\
395 0 12: bc 7f 00\n\
396 0 12: bc 65 00\n\
397 0 12: bc 64 00\n\
398 0 12: bc 06 02\n\
399 0 12: bc 26 00\n\
400 0 13: ed 00 40\n\
401 0 13: bd 7a 00\n\
402 0 13: bd 7d 00\n\
403 0 13: bd 7f 00\n\
404 0 13: bd 65 00\n\
405 0 13: bd 64 00\n\
406 0 13: bd 06 02\n\
407 0 13: bd 26 00\n\
408 0 14: ee 00 40\n\
409 0 14: be 7a 00\n\
410 0 14: be 7d 00\n\
411 0 14: be 7f 00\n\
412 0 14: be 65 00\n\
413 0 14: be 64 00\n\
414 0 14: be 06 02\n\
415 0 14: be 26 00\n\
416 0 15: ef 00 40\n\
417 0 15: bf 7a 00\n\
418 0 15: bf 7d 00\n\
419 0 15: bf 7f 00\n\
420 0 15: bf 65 00\n\
421 0 15: bf 64 00\n\
422 0 15: bf 06 02\n\
423 0 15: bf 26 00\n\
424 0 0: c0 4f\n\
425 0 0: 90 3c 7f\n\
426 49920 1: c1 4f\n\
427 49920 1: 91 40 1f\n\
428 99840 1: 81 40 40\n\
429 99840 2: c2 4f\n\
430 99840 2: 92 43 3f\n\
431 149760 2: 82 43 40\n\
432 149760 3: c3 4f\n\
433 149760 3: 93 34 7f\n\
434 199680 3: 83 34 40\n\
435 249600 0: 80 3c 7f\n\
436 249600 ...closed.\n"),__LINE__,(__FILE__)));
437 
438  sleep(1);
439 
441 
442  CPPUNIT_ASSERT(out->Check(("0 Opened...\n\
443 0 0: e0 00 40\n\
444 0 0: b0 7a 00\n\
445 0 0: b0 7d 00\n\
446 0 0: b0 7f 00\n\
447 0 0: b0 65 00\n\
448 0 0: b0 64 00\n\
449 0 0: b0 06 02\n\
450 0 0: b0 26 00\n\
451 0 1: e1 00 40\n\
452 0 1: b1 7a 00\n\
453 0 1: b1 7d 00\n\
454 0 1: b1 7f 00\n\
455 0 1: b1 65 00\n\
456 0 1: b1 64 00\n\
457 0 1: b1 06 02\n\
458 0 1: b1 26 00\n\
459 0 2: e2 00 40\n\
460 0 2: b2 7a 00\n\
461 0 2: b2 7d 00\n\
462 0 2: b2 7f 00\n\
463 0 2: b2 65 00\n\
464 0 2: b2 64 00\n\
465 0 2: b2 06 02\n\
466 0 2: b2 26 00\n\
467 0 3: e3 00 40\n\
468 0 3: b3 7a 00\n\
469 0 3: b3 7d 00\n\
470 0 3: b3 7f 00\n\
471 0 3: b3 65 00\n\
472 0 3: b3 64 00\n\
473 0 3: b3 06 02\n\
474 0 3: b3 26 00\n\
475 0 4: e4 00 40\n\
476 0 4: b4 7a 00\n\
477 0 4: b4 7d 00\n\
478 0 4: b4 7f 00\n\
479 0 4: b4 65 00\n\
480 0 4: b4 64 00\n\
481 0 4: b4 06 02\n\
482 0 4: b4 26 00\n\
483 0 5: e5 00 40\n\
484 0 5: b5 7a 00\n\
485 0 5: b5 7d 00\n\
486 0 5: b5 7f 00\n\
487 0 5: b5 65 00\n\
488 0 5: b5 64 00\n\
489 0 5: b5 06 02\n\
490 0 5: b5 26 00\n\
491 0 6: e6 00 40\n\
492 0 6: b6 7a 00\n\
493 0 6: b6 7d 00\n\
494 0 6: b6 7f 00\n\
495 0 6: b6 65 00\n\
496 0 6: b6 64 00\n\
497 0 6: b6 06 02\n\
498 0 6: b6 26 00\n\
499 0 7: e7 00 40\n\
500 0 7: b7 7a 00\n\
501 0 7: b7 7d 00\n\
502 0 7: b7 7f 00\n\
503 0 7: b7 65 00\n\
504 0 7: b7 64 00\n\
505 0 7: b7 06 02\n\
506 0 7: b7 26 00\n\
507 0 8: e8 00 40\n\
508 0 8: b8 7a 00\n\
509 0 8: b8 7d 00\n\
510 0 8: b8 7f 00\n\
511 0 8: b8 65 00\n\
512 0 8: b8 64 00\n\
513 0 8: b8 06 02\n\
514 0 8: b8 26 00\n\
515 0 9: e9 00 40\n\
516 0 9: b9 7a 00\n\
517 0 9: b9 7d 00\n\
518 0 9: b9 7f 00\n\
519 0 9: b9 65 00\n\
520 0 9: b9 64 00\n\
521 0 9: b9 06 02\n\
522 0 9: b9 26 00\n\
523 0 10: ea 00 40\n\
524 0 10: ba 7a 00\n\
525 0 10: ba 7d 00\n\
526 0 10: ba 7f 00\n\
527 0 10: ba 65 00\n\
528 0 10: ba 64 00\n\
529 0 10: ba 06 02\n\
530 0 10: ba 26 00\n\
531 0 11: eb 00 40\n\
532 0 11: bb 7a 00\n\
533 0 11: bb 7d 00\n\
534 0 11: bb 7f 00\n\
535 0 11: bb 65 00\n\
536 0 11: bb 64 00\n\
537 0 11: bb 06 02\n\
538 0 11: bb 26 00\n\
539 0 12: ec 00 40\n\
540 0 12: bc 7a 00\n\
541 0 12: bc 7d 00\n\
542 0 12: bc 7f 00\n\
543 0 12: bc 65 00\n\
544 0 12: bc 64 00\n\
545 0 12: bc 06 02\n\
546 0 12: bc 26 00\n\
547 0 13: ed 00 40\n\
548 0 13: bd 7a 00\n\
549 0 13: bd 7d 00\n\
550 0 13: bd 7f 00\n\
551 0 13: bd 65 00\n\
552 0 13: bd 64 00\n\
553 0 13: bd 06 02\n\
554 0 13: bd 26 00\n\
555 0 14: ee 00 40\n\
556 0 14: be 7a 00\n\
557 0 14: be 7d 00\n\
558 0 14: be 7f 00\n\
559 0 14: be 65 00\n\
560 0 14: be 64 00\n\
561 0 14: be 06 02\n\
562 0 14: be 26 00\n\
563 0 15: ef 00 40\n\
564 0 15: bf 7a 00\n\
565 0 15: bf 7d 00\n\
566 0 15: bf 7f 00\n\
567 0 15: bf 65 00\n\
568 0 15: bf 64 00\n\
569 0 15: bf 06 02\n\
570 0 15: bf 26 00\n\
571 0 0: c0 4f\n\
572 0 0: 90 3c 7f\n\
573 49920 1: c1 4f\n\
574 49920 1: 91 40 1f\n\
575 99840 1: 81 40 40\n\
576 99840 2: c2 4f\n\
577 99840 2: 92 43 3f\n\
578 149760 2: 82 43 40\n\
579 149760 3: c3 4f\n\
580 149760 3: 93 34 7f\n\
581 199680 3: 83 34 40\n\
582 249600 0: 80 3c 7f\n\
583 249600 ...closed.\n"),__LINE__,(__FILE__)));
584 }
mutabor::InputDevice in
Definition: DevMidFTest.h:84
static const listtype & GetBoxList()
Definition: Box.h:340
static const routeListType & GetRouteList()
Definition: Route.h:404
#define MUTABOR_NO_DELTA
Definition: timing.h:62
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:458
not for headers
Definition: midicmnTest.h:67
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
#define mutint64
Definition: Defs.h:89
void SetBendingRange(int br)
Definition: midicmn.h:552
bool Check(std::string s, int line=-1, std::string filename=(__FILE__))
Definition: midicmnTest.h:88
static Box Create(int type, int id=NewBox)
Definition: Box.h:899
static const listtype & GetDeviceList()
Definition: Device.h:752
static bool BatchPlay()
Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex...
Definition: Device.cpp:446
CurrentTimer CurrentTime
Definition: timing.cpp:43
static Route Create()
Creates a generic route.
Definition: Route.h:595
void OutputMidiFileTest::testBatchPlay1 ( )
Noch zu erledigen:
Make the following line unneccessary: Implement caching of system states

Definiert in Zeile 5049 der Datei DevMidFTest.cpp.

Benutzt mutabor::InputDeviceClass::BatchPlay(), OutputMidiFileTest::box, OutputMidiFileTest::CheckOut(), mutabor::OutputMidiFile::Close(), mutabor::InputMidiFile::Close(), mutabor::connect(), mutabor::DeviceFactory::CreateInput(), mutabor::CurrentTime, DEBUGLOG, mutabor::DTMidiFile, MUTABOR_NO_DELTA, mutint64, OutputMidiFileTest::out, OutputMidiFileTest::route und mutabor::CurrentTimer::UseRealtime().

5050 {
5051 #ifdef DEBUG
5052 // mutabor::mutabor_debug_flags.timer = true;
5053 // mutabor::mutabor_debug_flags.midiio = true;
5054 #endif
5055 
5056  std::string CheckStr;
5057  std::string DataStr;
5060  mutabor::InputMidiFile * in =
5061  static_cast<mutabor::InputMidiFile *> (inguard.get());
5062  CPPUNIT_ASSERT( in );
5063 
5064  connect(route, inguard);
5065 
5066  in -> SetName(SRCDIR "/bug019010.mid");
5069 
5070  CPPUNIT_ASSERT((out -> Open()));
5071 
5072 
5073  DataStr = ("\
5074  04 · 04 · 02 · 18 · 08 · 00 · e0 · 00 · 40 @ 00 · b0 · 7a z 00 · 00 · b0 · 7d }\n\
5075  00 · 00 · b0 · 7f · 00 · 00 · b0 · 65 e 00 · 00 · b0 · 64 d 00 · 00 · b0 · 06 ·\n\
5076  02 · 00 · b0 · 26 & 00 · 00 · e1 · 00 · 40 @ 00 · b1 · 7a z 00 · 00 · b1 · 7d }\n\
5077  00 · 00 · b1 · 7f · 00 · 00 · b1 · 65 e 00 · 00 · b1 · 64 d 00 · 00 · b1 · 06 ·\n\
5078  02 · 00 · b1 · 26 & 00 · 00 · e2 · 00 · 40 @ 00 · b2 · 7a z 00 · 00 · b2 · 7d }\n\
5079  00 · 00 · b2 · 7f · 00 · 00 · b2 · 65 e 00 · 00 · b2 · 64 d 00 · 00 · b2 · 06 ·\n\
5080  02 · 00 · b2 · 26 & 00 · 00 · e3 · 00 · 40 @ 00 · b3 · 7a z 00 · 00 · b3 · 7d }\n\
5081  00 · 00 · b3 · 7f · 00 · 00 · b3 · 65 e 00 · 00 · b3 · 64 d 00 · 00 · b3 · 06 ·\n\
5082  02 · 00 · b3 · 26 & 00 · 00 · e4 · 00 · 40 @ 00 · b4 · 7a z 00 · 00 · b4 · 7d }\n\
5083  00 · 00 · b4 · 7f · 00 · 00 · b4 · 65 e 00 · 00 · b4 · 64 d 00 · 00 · b4 · 06 ·\n\
5084  02 · 00 · b4 · 26 & 00 · 00 · e5 · 00 · 40 @ 00 · b5 · 7a z 00 · 00 · b5 · 7d }\n\
5085  00 · 00 · b5 · 7f · 00 · 00 · b5 · 65 e 00 · 00 · b5 · 64 d 00 · 00 · b5 · 06 ·\n\
5086  02 · 00 · b5 · 26 & 00 · 00 · e6 · 00 · 40 @ 00 · b6 · 7a z 00 · 00 · b6 · 7d }\n\
5087  00 · 00 · b6 · 7f · 00 · 00 · b6 · 65 e 00 · 00 · b6 · 64 d 00 · 00 · b6 · 06 ·\n\
5088  02 · 00 · b6 · 26 & 00 · 00 · e7 · 00 · 40 @ 00 · b7 · 7a z 00 · 00 · b7 · 7d }\n\
5089  00 · 00 · b7 · 7f · 00 · 00 · b7 · 65 e 00 · 00 · b7 · 64 d 00 · 00 · b7 · 06 ·\n\
5090  02 · 00 · b7 · 26 & 00 · 00 · e8 · 00 · 40 @ 00 · b8 · 7a z 00 · 00 · b8 · 7d }\n\
5091  00 · 00 · b8 · 7f · 00 · 00 · b8 · 65 e 00 · 00 · b8 · 64 d 00 · 00 · b8 · 06 ·\n\
5092  02 · 00 · b8 · 26 & 00 · 00 · e9 · 00 · 40 @ 00 · b9 · 7a z 00 · 00 · b9 · 7d }\n\
5093  00 · 00 · b9 · 7f · 00 · 00 · b9 · 65 e 00 · 00 · b9 · 64 d 00 · 00 · b9 · 06 ·\n\
5094  02 · 00 · b9 · 26 & 00 · 00 · ea · 00 · 40 @ 00 · ba · 7a z 00 · 00 · ba · 7d }\n\
5095  00 · 00 · ba · 7f · 00 · 00 · ba · 65 e 00 · 00 · ba · 64 d 00 · 00 · ba · 06 ·\n\
5096  02 · 00 · ba · 26 & 00 · 00 · eb · 00 · 40 @ 00 · bb · 7a z 00 · 00 · bb · 7d }\n\
5097  00 · 00 · bb · 7f · 00 · 00 · bb · 65 e 00 · 00 · bb · 64 d 00 · 00 · bb · 06 ·\n\
5098  02 · 00 · bb · 26 & 00 · 00 · ec · 00 · 40 @ 00 · bc · 7a z 00 · 00 · bc · 7d }\n\
5099  00 · 00 · bc · 7f · 00 · 00 · bc · 65 e 00 · 00 · bc · 64 d 00 · 00 · bc · 06 ·\n\
5100  02 · 00 · bc · 26 & 00 · 00 · ed · 00 · 40 @ 00 · bd · 7a z 00 · 00 · bd · 7d }\n\
5101  00 · 00 · bd · 7f · 00 · 00 · bd · 65 e 00 · 00 · bd · 64 d 00 · 00 · bd · 06 ·\n\
5102  02 · 00 · bd · 26 & 00 · 00 · ee · 00 · 40 @ 00 · be · 7a z 00 · 00 · be · 7d }\n\
5103  00 · 00 · be · 7f · 00 · 00 · be · 65 e 00 · 00 · be · 64 d 00 · 00 · be · 06 ·\n\
5104  02 · 00 · be · 26 & 00 · 00 · ef · 00 · 40 @ 00 · bf · 7a z 00 · 00 · bf · 7d }\n\
5105  00 · 00 · bf · 7f · 00 · 00 · bf · 65 e 00 · 00 · bf · 64 d 00 · 00 · bf · 06 ·\n\
5106 ");
5107 
5108  CheckStr = ("\
5109  4d M 54 T 68 h 64 d 00 · 00 · 00 · 06 · 00 · 00 · 00 · 01 · e7 · 28 ( 4d M 54 T\n\
5110  72 r 6b k 00 · 00 · 02 · 13 · 00 · ff · 51 Q 03 · 07 · d0 · 00 · 00 · ff · 58 X\n\
5111 ")
5112  + DataStr + ("\
5113  02 · 00 · bf · 26 & 00 · 00 · ff · 2f / 00 ·\n\
5114 ");
5115 
5116  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5117  CPPUNIT_ASSERT(box->Open());
5118  CPPUNIT_ASSERT((in -> Open()));
5119  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5120 
5121  in -> Play();
5122 
5123  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5124 
5125  mutint64 delta = in -> PrepareNextEvent();
5126  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5127  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5128  CPPUNIT_ASSERT(delta == 1086);
5129  mutabor::CurrentTime += delta;
5130 
5131  delta = in -> PrepareNextEvent();
5132  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5133  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5134  CPPUNIT_ASSERT(delta == 1954800);
5135  mutabor::CurrentTime += delta;
5136 
5137  delta = in -> PrepareNextEvent();
5138  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5139  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5140  CPPUNIT_ASSERT(delta == 14725074);
5141  mutabor::CurrentTime += delta;
5142 
5143  delta = in -> PrepareNextEvent();
5144  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5145  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5146  CPPUNIT_ASSERT(delta == 130320);
5147  mutabor::CurrentTime += delta;
5148 
5149  delta = in -> PrepareNextEvent();
5150  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5151  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5152  CPPUNIT_ASSERT(delta == 130200);
5153  mutabor::CurrentTime += delta;
5154 
5155  delta = in -> PrepareNextEvent();
5156  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5157  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5158  CPPUNIT_ASSERT(delta == 4769600);
5159  mutabor::CurrentTime += delta;
5160 
5161  delta = in -> PrepareNextEvent();
5162  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5163 
5164  CheckStr = ("\
5165  4d M 54 T 68 h 64 d 00 · 00 · 00 · 06 · 00 · 00 · 00 · 01 · e7 · 28 ( 4d M 54 T\n\
5166  72 r 6b k 00 · 00 · 02 · 19 · 00 · ff · 51 Q 03 · 07 · d0 · 00 · 00 · ff · 58 X\n\
5167 ")
5168  + DataStr + ("\
5169  02 · 00 · bf · 26 & 00 · 81 · a9 · 4f O 90 · 3c < 7f · 00 · ff · 2f / 00 ·\n\
5170 ");
5171 
5172  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5173  CPPUNIT_ASSERT(delta == 6287200);
5174  mutabor::CurrentTime += delta;
5175 
5176  delta = in -> PrepareNextEvent();
5177  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5178  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5179  CPPUNIT_ASSERT(delta == 845040);
5180  mutabor::CurrentTime += delta;
5181 
5182  delta = in -> PrepareNextEvent();
5183  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5184  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5185  CPPUNIT_ASSERT(delta == 120000);
5186  mutabor::CurrentTime += delta;
5187 
5188  delta = in -> PrepareNextEvent();
5189  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5190  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5191  CPPUNIT_ASSERT(delta == 123960);
5192  mutabor::CurrentTime += delta;
5193 
5194  delta = in -> PrepareNextEvent();
5195  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5196  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5197  CPPUNIT_ASSERT(delta == 3222960);
5198  mutabor::CurrentTime += delta;
5199 
5200  delta = in -> PrepareNextEvent();
5201  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5202 
5203 
5204  DataStr += ("\
5205  02 · 00 · bf · 26 & 00 · 81 · a9 · 4f O 90 · 3c < 7f · d2 · 67 g 91 · 40 @ 1f ·\n\
5206 ");
5207 
5208  CheckStr = ("\
5209  4d M 54 T 68 h 64 d 00 · 00 · 00 · 06 · 00 · 00 · 00 · 01 · e7 · 28 ( 4d M 54 T\n\
5210  72 r 6b k 00 · 00 · 02 · 1e · 00 · ff · 51 Q 03 · 07 · d0 · 00 · 00 · ff · 58 X\n\
5211 ")
5212  + DataStr + ("\
5213  00 · ff · 2f / 00 ·\n\
5214 ");
5215 
5216  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5217  CPPUNIT_ASSERT(delta == 10330000);
5218  mutabor::CurrentTime += delta;
5219 
5220  delta = in -> PrepareNextEvent();
5221  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5222 
5223  CheckStr = ("\
5224  4d M 54 T 68 h 64 d 00 · 00 · 00 · 06 · 00 · 00 · 00 · 01 · e7 · 28 ( 4d M 54 T\n\
5225  72 r 6b k 00 · 00 · 02 · 23 # 00 · ff · 51 Q 03 · 07 · d0 · 00 · 00 · ff · 58 X\n\
5226 ")
5227  + DataStr + ("\
5228  d0 · 5a Z 81 · 40 @ 40 @ 00 · ff · 2f / 00 ·\n\
5229 ");
5230 
5231  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5232  CPPUNIT_ASSERT(delta == 10330000);
5233  mutabor::CurrentTime += delta;
5234 
5235  delta = in -> PrepareNextEvent();
5236  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5237 
5238  CheckStr = ("\
5239  4d M 54 T 68 h 64 d 00 · 00 · 00 · 06 · 00 · 00 · 00 · 01 · e7 · 28 ( 4d M 54 T\n\
5240  72 r 6b k 00 · 00 · 02 · 28 ( 00 · ff · 51 Q 03 · 07 · d0 · 00 · 00 · ff · 58 X\n\
5241 ")
5242  + DataStr + ("\
5243  d0 · 5a Z 81 · 40 @ 40 @ d0 · 5a Z 92 · 43 C 3f ? 00 · ff · 2f / 00 ·\n\
5244 ");
5245 
5246 
5247  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5248  CPPUNIT_ASSERT(delta == 10330000);
5249  mutabor::CurrentTime += delta;
5250 
5251  delta = in -> PrepareNextEvent();
5252  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5253  CheckStr = ("\
5254  4d M 54 T 68 h 64 d 00 · 00 · 00 · 06 · 00 · 00 · 00 · 01 · e7 · 28 ( 4d M 54 T\n\
5255  72 r 6b k 00 · 00 · 02 · 2d - 00 · ff · 51 Q 03 · 07 · d0 · 00 · 00 · ff · 58 X\n\
5256 ")
5257  + DataStr + ("\
5258  d0 · 5a Z 81 · 40 @ 40 @ d0 · 5a Z 92 · 43 C 3f ? d0 · 5a Z 82 · 43 C 40 @ 00 ·\n\
5259  ff · 2f / 00 ·\n\
5260 ");
5261  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5262  CPPUNIT_ASSERT(delta == 7809480);
5263  mutabor::CurrentTime += delta;
5264 
5265  delta = in -> PrepareNextEvent();
5266  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5267  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5268  CPPUNIT_ASSERT(delta == 6100000);
5269  mutabor::CurrentTime += delta;
5270 
5271  delta = in -> PrepareNextEvent();
5272  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5273 
5274  DataStr += ("\
5275  d0 · 5a Z 81 · 40 @ 40 @ d0 · 5a Z 92 · 43 C 3f ? d0 · 5a Z 82 · 43 C 40 @ ec ·\n\
5276 ");
5277  CheckStr = ("\
5278  4d M 54 T 68 h 64 d 00 · 00 · 00 · 06 · 00 · 00 · 00 · 01 · e7 · 28 ( 4d M 54 T\n\
5279  72 r 6b k 00 · 00 · 02 · 32 2 00 · ff · 51 Q 03 · 07 · d0 · 00 · 00 · ff · 58 X\n\
5280 ")
5281  + DataStr + ("\
5282  56 V 93 · 34 4 7f · 00 · ff · 2f / 00 ·\n\
5283 ");
5284  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5285  CPPUNIT_ASSERT(delta == 200000);
5286  mutabor::CurrentTime += delta;
5287 
5288  delta = in -> PrepareNextEvent();
5289  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5290  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5291  CPPUNIT_ASSERT(delta == 146280);
5292  mutabor::CurrentTime += delta;
5293 
5294  delta = in -> PrepareNextEvent();
5295  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5296  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5297  CPPUNIT_ASSERT(delta == 148080);
5298  mutabor::CurrentTime += delta;
5299 
5300  delta = in -> PrepareNextEvent();
5301  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5302  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5303  CPPUNIT_ASSERT(delta == 150000);
5304  mutabor::CurrentTime += delta;
5305 
5306  delta = in -> PrepareNextEvent();
5307  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5308  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5309  CPPUNIT_ASSERT(delta == 151800);
5310  mutabor::CurrentTime += delta;
5311 
5312  delta = in -> PrepareNextEvent();
5313  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5314  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5315  CPPUNIT_ASSERT(delta == 153840);
5316  mutabor::CurrentTime += delta;
5317 
5318  delta = in -> PrepareNextEvent();
5319  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5320  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5321  CPPUNIT_ASSERT(delta == 155760);
5322  mutabor::CurrentTime += delta;
5323 
5324  delta = in -> PrepareNextEvent();
5325  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5326  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5327  CPPUNIT_ASSERT(delta == 157800);
5328  mutabor::CurrentTime += delta;
5329 
5330  delta = in -> PrepareNextEvent();
5331  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5332  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5333  CPPUNIT_ASSERT(delta == 159960);
5334  mutabor::CurrentTime += delta;
5335 
5336  delta = in -> PrepareNextEvent();
5337  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5338  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5339  CPPUNIT_ASSERT(delta == 12104960);
5340  mutabor::CurrentTime += delta;
5341 
5342  delta = in -> PrepareNextEvent();
5343  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5344 
5345  CheckStr = ("\
5346  4d M 54 T 68 h 64 d 00 · 00 · 00 · 06 · 00 · 00 · 00 · 01 · e7 · 28 ( 4d M 54 T\n\
5347  72 r 6b k 00 · 00 · 02 · 37 7 00 · ff · 51 Q 03 · 07 · d0 · 00 · 00 · ff · 58 X\n\
5348 ")
5349  + DataStr + ("\
5350  56 V 93 · 34 4 7f · e9 · 58 X 83 · 34 4 40 @ 00 · ff · 2f / 00 ·\n\
5351 ");
5352  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5353  CPPUNIT_ASSERT(delta == 13510000);
5354  mutabor::CurrentTime += delta;
5355 
5356  delta = in -> PrepareNextEvent();
5357  DEBUGLOG (midiio, "delta = %d, Current time = %ld" ,delta,mutabor::CurrentTime.Get());
5358  CheckStr = ("\
5359  4d M 54 T 68 h 64 d 00 · 00 · 00 · 06 · 00 · 00 · 00 · 01 · e7 · 28 ( 4d M 54 T\n\
5360  72 r 6b k 00 · 00 · 02 · 3c < 00 · ff · 51 Q 03 · 07 · d0 · 00 · 00 · ff · 58 X\n\
5361 ")
5362  + DataStr + ("\
5363  56 V 93 · 34 4 7f · e9 · 58 X 83 · 34 4 40 @ e9 · 46 F 80 · 3c < 7f · 00 · ff ·\n\
5364  2f / 00 ·\n\
5365 ");
5366  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5367  CPPUNIT_ASSERT(delta == MUTABOR_NO_DELTA);
5368 
5369 
5370 
5371  in->Close();
5372  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5373 
5374  out->Close();
5375  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5376 
5377 
5378 
5379  // First check: Input device provides the correct delta times
5380 
5383 
5384  CPPUNIT_ASSERT( in );
5385  in -> SetName(("test_output.mid"));
5386  out -> SetName(("test_output2.mid"));
5387 
5388 
5389 // in -> Play(wxTHREAD_JOINABLE);
5391 
5392 
5396  CheckStr = ("\
5397  4d M 54 T 68 h 64 d 00 · 00 · 00 · 06 · 00 · 00 · 00 · 01 · e7 · 28 ( 4d M 54 T\n\
5398  72 r 6b k 00 · 00 · 02 · 5c \\ 00 · ff · 51 Q 03 · 07 · d0 · 00 · 00 · ff · 58 X\n\
5399  04 · 04 · 02 · 18 · 08 · 00 · e0 · 00 · 40 @ 00 · b0 · 7a z 00 · 00 · b0 · 7d }\n\
5400  00 · 00 · b0 · 7f · 00 · 00 · b0 · 65 e 00 · 00 · b0 · 64 d 00 · 00 · b0 · 06 ·\n\
5401  02 · 00 · b0 · 26 & 00 · 00 · e1 · 00 · 40 @ 00 · b1 · 7a z 00 · 00 · b1 · 7d }\n\
5402  00 · 00 · b1 · 7f · 00 · 00 · b1 · 65 e 00 · 00 · b1 · 64 d 00 · 00 · b1 · 06 ·\n\
5403  02 · 00 · b1 · 26 & 00 · 00 · e2 · 00 · 40 @ 00 · b2 · 7a z 00 · 00 · b2 · 7d }\n\
5404  00 · 00 · b2 · 7f · 00 · 00 · b2 · 65 e 00 · 00 · b2 · 64 d 00 · 00 · b2 · 06 ·\n\
5405  02 · 00 · b2 · 26 & 00 · 00 · e3 · 00 · 40 @ 00 · b3 · 7a z 00 · 00 · b3 · 7d }\n\
5406  00 · 00 · b3 · 7f · 00 · 00 · b3 · 65 e 00 · 00 · b3 · 64 d 00 · 00 · b3 · 06 ·\n\
5407  02 · 00 · b3 · 26 & 00 · 00 · e4 · 00 · 40 @ 00 · b4 · 7a z 00 · 00 · b4 · 7d }\n\
5408  00 · 00 · b4 · 7f · 00 · 00 · b4 · 65 e 00 · 00 · b4 · 64 d 00 · 00 · b4 · 06 ·\n\
5409  02 · 00 · b4 · 26 & 00 · 00 · e5 · 00 · 40 @ 00 · b5 · 7a z 00 · 00 · b5 · 7d }\n\
5410  00 · 00 · b5 · 7f · 00 · 00 · b5 · 65 e 00 · 00 · b5 · 64 d 00 · 00 · b5 · 06 ·\n\
5411  02 · 00 · b5 · 26 & 00 · 00 · e6 · 00 · 40 @ 00 · b6 · 7a z 00 · 00 · b6 · 7d }\n\
5412  00 · 00 · b6 · 7f · 00 · 00 · b6 · 65 e 00 · 00 · b6 · 64 d 00 · 00 · b6 · 06 ·\n\
5413  02 · 00 · b6 · 26 & 00 · 00 · e7 · 00 · 40 @ 00 · b7 · 7a z 00 · 00 · b7 · 7d }\n\
5414  00 · 00 · b7 · 7f · 00 · 00 · b7 · 65 e 00 · 00 · b7 · 64 d 00 · 00 · b7 · 06 ·\n\
5415  02 · 00 · b7 · 26 & 00 · 00 · e8 · 00 · 40 @ 00 · b8 · 7a z 00 · 00 · b8 · 7d }\n\
5416  00 · 00 · b8 · 7f · 00 · 00 · b8 · 65 e 00 · 00 · b8 · 64 d 00 · 00 · b8 · 06 ·\n\
5417  02 · 00 · b8 · 26 & 00 · 00 · e9 · 00 · 40 @ 00 · b9 · 7a z 00 · 00 · b9 · 7d }\n\
5418  00 · 00 · b9 · 7f · 00 · 00 · b9 · 65 e 00 · 00 · b9 · 64 d 00 · 00 · b9 · 06 ·\n\
5419  02 · 00 · b9 · 26 & 00 · 00 · ea · 00 · 40 @ 00 · ba · 7a z 00 · 00 · ba · 7d }\n\
5420  00 · 00 · ba · 7f · 00 · 00 · ba · 65 e 00 · 00 · ba · 64 d 00 · 00 · ba · 06 ·\n\
5421  02 · 00 · ba · 26 & 00 · 00 · eb · 00 · 40 @ 00 · bb · 7a z 00 · 00 · bb · 7d }\n\
5422  00 · 00 · bb · 7f · 00 · 00 · bb · 65 e 00 · 00 · bb · 64 d 00 · 00 · bb · 06 ·\n\
5423  02 · 00 · bb · 26 & 00 · 00 · ec · 00 · 40 @ 00 · bc · 7a z 00 · 00 · bc · 7d }\n\
5424  00 · 00 · bc · 7f · 00 · 00 · bc · 65 e 00 · 00 · bc · 64 d 00 · 00 · bc · 06 ·\n\
5425  02 · 00 · bc · 26 & 00 · 00 · ed · 00 · 40 @ 00 · bd · 7a z 00 · 00 · bd · 7d }\n\
5426  00 · 00 · bd · 7f · 00 · 00 · bd · 65 e 00 · 00 · bd · 64 d 00 · 00 · bd · 06 ·\n\
5427  02 · 00 · bd · 26 & 00 · 00 · ee · 00 · 40 @ 00 · be · 7a z 00 · 00 · be · 7d }\n\
5428  00 · 00 · be · 7f · 00 · 00 · be · 65 e 00 · 00 · be · 64 d 00 · 00 · be · 06 ·\n\
5429  02 · 00 · be · 26 & 00 · 00 · ef · 00 · 40 @ 00 · bf · 7a z 00 · 00 · bf · 7d }\n\
5430  00 · 00 · bf · 7f · 00 · 00 · bf · 65 e 00 · 00 · bf · 64 d 00 · 00 · bf · 06 ·\n\
5431  02 · 00 · bf · 26 & 00 · 81 · a9 · 4f O 90 · 3c < 7f · 00 · b0 · 65 e 00 · 00 ·\n\
5432  b0 · 64 d 00 · d2 · 67 g 91 · 40 @ 1f · 00 · b1 · 65 e 00 · 00 · b1 · 64 d 00 ·\n\
5433  d0 · 5a Z 81 · 40 @ 40 @ d0 · 5a Z 92 · 43 C 3f ? 00 · b2 · 65 e 00 · 00 · b2 ·\n\
5434  64 d 00 · d0 · 5a Z 82 · 43 C 40 @ ec · 56 V 93 · 34 4 7f · 00 · b3 · 65 e 00 ·\n\
5435  00 · b3 · 64 d 00 · e9 · 58 X 83 · 34 4 40 @ e9 · 46 F 80 · 3c < 7f · 00 · ff ·\n\
5436  2f / 00 ·\n\
5437 ");
5438 
5439  CPPUNIT_ASSERT(CheckOut(CheckStr,__LINE__,(__FILE__)));
5440 }
bool CheckOut(std::string s, int line, const char *file)
#define DEBUGLOG(level,...)
Definition: debug.h:240
virtual void Close()
Definition: DevMidF.cpp:340
virtual void Close()
Definition: DevMidF.cpp:676
#define MUTABOR_NO_DELTA
Definition: timing.h:62
mutabor::OutputMidiFile * out
Definition: DevMidFTest.h:239
mutabor::Route route
Definition: DevMidFTest.h:240
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:458
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
#define mutint64
Definition: Defs.h:89
static InputDevice CreateInput(int type, const std::string &name="", MutaborModeType mode=DeviceStop, int id=-1)
Definition: Device.h:1381
static bool BatchPlay()
Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex...
Definition: Device.cpp:446
CurrentTimer CurrentTime
Definition: timing.cpp:43
mutabor::Box box
Definition: DevMidFTest.h:241
void InputMidiFileTest::testBoxMidiIn ( )

Definiert in Zeile 5442 der Datei DevMidFTest.cpp.

Benutzt mutabor::InputDeviceClass::BatchPlay(), mutabor::Box0, midicmnOutputDevice::Check(), mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), InputMidiFileTest::in, mutabor::initialize_box_data(), mutabor::CommonMidiOutput< T, D >::SetBendingRange() und mutabor::CurrentTimer::UseRealtime().

5443 {
5444 #ifdef DEBUG
5445 // mutabor::mutabor_debug_flags.timer = true;
5446 // mutabor::mutabor_debug_flags.midiio = true;
5447 // mutabor::mutabor_debug_flags.midifile = true;
5448 #endif
5449 
5450  // input device is set up during setUp
5451  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().size() == 1);
5452  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
5453  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
5454  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
5455 
5457  midicmnOutputDevice * out;
5458  mutabor::ScopedBox box(NULL);
5459  mutabor::ScopedRoute route;
5461 
5464  connect(route,box);
5466 
5467  std::string name = srcdir;
5468  name += ("/midiin.mut");
5469 
5470  std::ifstream file(name.c_str());
5471  CPPUNIT_ASSERT(file.is_open());
5472  file.seekg(0, std::ios::end);
5473  std::streampos length = file.tellg();
5474  file.seekg(0, std::ios::beg);
5475  char * logic_string = (char *) malloc((size_t)length+1);
5476  CPPUNIT_ASSERT(file.read(logic_string, length).gcount() == length);
5477  logic_string[length] = 0;
5478 
5479  MyCompileCallback callback;
5480  CPPUNIT_ASSERT(box->Compile(&callback, logic_string));
5481 
5482  free(logic_string);
5483  logic_string = NULL;
5484 
5485  route->SetActive(true);
5486 
5487 
5489  out = new midicmnOutputDevice(("Test"));
5490  out->SetBendingRange(2);
5491  //out = new midicmnOutputDevice(3,("Test"));
5492  guard = out;
5493 
5494  connect(route,guard);
5495  route->SetOutputFrom (0);
5496  route->SetOutputTo (15);
5497  route->OutputAvoidDrumChannel (true);
5498 
5499  connect(route, in);
5500 
5501  CPPUNIT_ASSERT( in );
5502  in -> SetName(SRCDIR "/midiin.mid");
5503 
5504 
5505  // First check: Input device provides the correct delta times
5508 
5509 // in -> Play(wxTHREAD_JOINABLE);
5511 
5512  CPPUNIT_ASSERT(out->Check(("\
5513 0 Opened...\n\
5514 0 0: e0 00 40\n\
5515 0 0: b0 7a 00\n\
5516 0 0: b0 7d 00\n\
5517 0 0: b0 7f 00\n\
5518 0 0: b0 65 00\n\
5519 0 0: b0 64 00\n\
5520 0 0: b0 06 02\n\
5521 0 0: b0 26 00\n\
5522 0 1: e1 00 40\n\
5523 0 1: b1 7a 00\n\
5524 0 1: b1 7d 00\n\
5525 0 1: b1 7f 00\n\
5526 0 1: b1 65 00\n\
5527 0 1: b1 64 00\n\
5528 0 1: b1 06 02\n\
5529 0 1: b1 26 00\n\
5530 0 2: e2 00 40\n\
5531 0 2: b2 7a 00\n\
5532 0 2: b2 7d 00\n\
5533 0 2: b2 7f 00\n\
5534 0 2: b2 65 00\n\
5535 0 2: b2 64 00\n\
5536 0 2: b2 06 02\n\
5537 0 2: b2 26 00\n\
5538 0 3: e3 00 40\n\
5539 0 3: b3 7a 00\n\
5540 0 3: b3 7d 00\n\
5541 0 3: b3 7f 00\n\
5542 0 3: b3 65 00\n\
5543 0 3: b3 64 00\n\
5544 0 3: b3 06 02\n\
5545 0 3: b3 26 00\n\
5546 0 4: e4 00 40\n\
5547 0 4: b4 7a 00\n\
5548 0 4: b4 7d 00\n\
5549 0 4: b4 7f 00\n\
5550 0 4: b4 65 00\n\
5551 0 4: b4 64 00\n\
5552 0 4: b4 06 02\n\
5553 0 4: b4 26 00\n\
5554 0 5: e5 00 40\n\
5555 0 5: b5 7a 00\n\
5556 0 5: b5 7d 00\n\
5557 0 5: b5 7f 00\n\
5558 0 5: b5 65 00\n\
5559 0 5: b5 64 00\n\
5560 0 5: b5 06 02\n\
5561 0 5: b5 26 00\n\
5562 0 6: e6 00 40\n\
5563 0 6: b6 7a 00\n\
5564 0 6: b6 7d 00\n\
5565 0 6: b6 7f 00\n\
5566 0 6: b6 65 00\n\
5567 0 6: b6 64 00\n\
5568 0 6: b6 06 02\n\
5569 0 6: b6 26 00\n\
5570 0 7: e7 00 40\n\
5571 0 7: b7 7a 00\n\
5572 0 7: b7 7d 00\n\
5573 0 7: b7 7f 00\n\
5574 0 7: b7 65 00\n\
5575 0 7: b7 64 00\n\
5576 0 7: b7 06 02\n\
5577 0 7: b7 26 00\n\
5578 0 8: e8 00 40\n\
5579 0 8: b8 7a 00\n\
5580 0 8: b8 7d 00\n\
5581 0 8: b8 7f 00\n\
5582 0 8: b8 65 00\n\
5583 0 8: b8 64 00\n\
5584 0 8: b8 06 02\n\
5585 0 8: b8 26 00\n\
5586 0 9: e9 00 40\n\
5587 0 9: b9 7a 00\n\
5588 0 9: b9 7d 00\n\
5589 0 9: b9 7f 00\n\
5590 0 9: b9 65 00\n\
5591 0 9: b9 64 00\n\
5592 0 9: b9 06 02\n\
5593 0 9: b9 26 00\n\
5594 0 10: ea 00 40\n\
5595 0 10: ba 7a 00\n\
5596 0 10: ba 7d 00\n\
5597 0 10: ba 7f 00\n\
5598 0 10: ba 65 00\n\
5599 0 10: ba 64 00\n\
5600 0 10: ba 06 02\n\
5601 0 10: ba 26 00\n\
5602 0 11: eb 00 40\n\
5603 0 11: bb 7a 00\n\
5604 0 11: bb 7d 00\n\
5605 0 11: bb 7f 00\n\
5606 0 11: bb 65 00\n\
5607 0 11: bb 64 00\n\
5608 0 11: bb 06 02\n\
5609 0 11: bb 26 00\n\
5610 0 12: ec 00 40\n\
5611 0 12: bc 7a 00\n\
5612 0 12: bc 7d 00\n\
5613 0 12: bc 7f 00\n\
5614 0 12: bc 65 00\n\
5615 0 12: bc 64 00\n\
5616 0 12: bc 06 02\n\
5617 0 12: bc 26 00\n\
5618 0 13: ed 00 40\n\
5619 0 13: bd 7a 00\n\
5620 0 13: bd 7d 00\n\
5621 0 13: bd 7f 00\n\
5622 0 13: bd 65 00\n\
5623 0 13: bd 64 00\n\
5624 0 13: bd 06 02\n\
5625 0 13: bd 26 00\n\
5626 0 14: ee 00 40\n\
5627 0 14: be 7a 00\n\
5628 0 14: be 7d 00\n\
5629 0 14: be 7f 00\n\
5630 0 14: be 65 00\n\
5631 0 14: be 64 00\n\
5632 0 14: be 06 02\n\
5633 0 14: be 26 00\n\
5634 0 15: ef 00 40\n\
5635 0 15: bf 7a 00\n\
5636 0 15: bf 7d 00\n\
5637 0 15: bf 7f 00\n\
5638 0 15: bf 65 00\n\
5639 0 15: bf 64 00\n\
5640 0 15: bf 06 02\n\
5641 0 15: bf 26 00\n\
5642 0 0: 90 3c 7f\n\
5643 1 0: b0 30 01\n\
5644 2 0: b0 30 00\n\
5645 2 0: 90 01 7f\n\
5646 200 1: 91 3c 7f\n\
5647 200 1: b1 30 00\n\
5648 200 0: 80 01 7f\n\
5649 544 0: 80 3c 40\n\
5650 545 1: 81 3c 40\n\
5651 546 ...closed.\n\
5652 "),__LINE__,(__FILE__)));
5653 
5654 }
mutabor::InputDevice in
Definition: DevMidFTest.h:84
void initialize_box_data()
Definition: Box.cpp:1057
static const listtype & GetBoxList()
Definition: Box.h:340
static const routeListType & GetRouteList()
Definition: Route.h:404
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:458
not for headers
Definition: midicmnTest.h:67
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
void SetBendingRange(int br)
Definition: midicmn.h:552
bool Check(std::string s, int line=-1, std::string filename=(__FILE__))
Definition: midicmnTest.h:88
static Box Create(int type, int id=NewBox)
Definition: Box.h:899
static const listtype & GetDeviceList()
Definition: Device.h:752
static bool BatchPlay()
Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex...
Definition: Device.cpp:446
CurrentTimer CurrentTime
Definition: timing.cpp:43
static Route Create()
Creates a generic route.
Definition: Route.h:595
void InputMidiFileTest::testBug019010 ( )

Definiert in Zeile 925 der Datei DevMidFTest.cpp.

Benutzt mutabor::InputDeviceClass::BatchPlay(), mutabor::Box0, midicmnOutputDevice::Check(), mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), InputMidiFileTest::in, mutabor::CommonMidiOutput< T, D >::SetBendingRange() und mutabor::CurrentTimer::UseRealtime().

926 {
927 #ifdef DEBUG
928 // mutabor_debug_flags.timer = true;
929 // mutabor_debug_flags.midiio = true;
930 // mutabor_debug_flags.midifile = true;
931 #endif
932 
933  // input device is set up during setUp
934  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().size() == 1);
935  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
936  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
937  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
938 
940  midicmnOutputDevice * out;
941  mutabor::ScopedBox box(NULL);
942  mutabor::ScopedRoute route;
944 
947  connect(route,box);
948 
950  out = new midicmnOutputDevice(("Test"));
951  out->SetBendingRange(2);
952  //out = new midicmnOutputDevice(3,("Test"));
953  guard = out;
954 
955  connect(route,guard);
956  route->SetOutputFrom (0);
957  route->SetOutputTo (15);
958  route->OutputAvoidDrumChannel (true);
959 
960  connect(route, in);
961 
962  CPPUNIT_ASSERT( in );
963  in -> SetName(SRCDIR "/bug019010.mid");
964 
965 
966  // First check: Input device provides the correct delta times
969 
970 // in -> Play(wxTHREAD_JOINABLE);
972 
973  CPPUNIT_ASSERT(out->Check(("\
974 0 Opened...\n\
975 0 0: e0 00 40\n\
976 0 0: b0 7a 00\n\
977 0 0: b0 7d 00\n\
978 0 0: b0 7f 00\n\
979 0 0: b0 65 00\n\
980 0 0: b0 64 00\n\
981 0 0: b0 06 02\n\
982 0 0: b0 26 00\n\
983 0 1: e1 00 40\n\
984 0 1: b1 7a 00\n\
985 0 1: b1 7d 00\n\
986 0 1: b1 7f 00\n\
987 0 1: b1 65 00\n\
988 0 1: b1 64 00\n\
989 0 1: b1 06 02\n\
990 0 1: b1 26 00\n\
991 0 2: e2 00 40\n\
992 0 2: b2 7a 00\n\
993 0 2: b2 7d 00\n\
994 0 2: b2 7f 00\n\
995 0 2: b2 65 00\n\
996 0 2: b2 64 00\n\
997 0 2: b2 06 02\n\
998 0 2: b2 26 00\n\
999 0 3: e3 00 40\n\
1000 0 3: b3 7a 00\n\
1001 0 3: b3 7d 00\n\
1002 0 3: b3 7f 00\n\
1003 0 3: b3 65 00\n\
1004 0 3: b3 64 00\n\
1005 0 3: b3 06 02\n\
1006 0 3: b3 26 00\n\
1007 0 4: e4 00 40\n\
1008 0 4: b4 7a 00\n\
1009 0 4: b4 7d 00\n\
1010 0 4: b4 7f 00\n\
1011 0 4: b4 65 00\n\
1012 0 4: b4 64 00\n\
1013 0 4: b4 06 02\n\
1014 0 4: b4 26 00\n\
1015 0 5: e5 00 40\n\
1016 0 5: b5 7a 00\n\
1017 0 5: b5 7d 00\n\
1018 0 5: b5 7f 00\n\
1019 0 5: b5 65 00\n\
1020 0 5: b5 64 00\n\
1021 0 5: b5 06 02\n\
1022 0 5: b5 26 00\n\
1023 0 6: e6 00 40\n\
1024 0 6: b6 7a 00\n\
1025 0 6: b6 7d 00\n\
1026 0 6: b6 7f 00\n\
1027 0 6: b6 65 00\n\
1028 0 6: b6 64 00\n\
1029 0 6: b6 06 02\n\
1030 0 6: b6 26 00\n\
1031 0 7: e7 00 40\n\
1032 0 7: b7 7a 00\n\
1033 0 7: b7 7d 00\n\
1034 0 7: b7 7f 00\n\
1035 0 7: b7 65 00\n\
1036 0 7: b7 64 00\n\
1037 0 7: b7 06 02\n\
1038 0 7: b7 26 00\n\
1039 0 8: e8 00 40\n\
1040 0 8: b8 7a 00\n\
1041 0 8: b8 7d 00\n\
1042 0 8: b8 7f 00\n\
1043 0 8: b8 65 00\n\
1044 0 8: b8 64 00\n\
1045 0 8: b8 06 02\n\
1046 0 8: b8 26 00\n\
1047 0 9: e9 00 40\n\
1048 0 9: b9 7a 00\n\
1049 0 9: b9 7d 00\n\
1050 0 9: b9 7f 00\n\
1051 0 9: b9 65 00\n\
1052 0 9: b9 64 00\n\
1053 0 9: b9 06 02\n\
1054 0 9: b9 26 00\n\
1055 0 10: ea 00 40\n\
1056 0 10: ba 7a 00\n\
1057 0 10: ba 7d 00\n\
1058 0 10: ba 7f 00\n\
1059 0 10: ba 65 00\n\
1060 0 10: ba 64 00\n\
1061 0 10: ba 06 02\n\
1062 0 10: ba 26 00\n\
1063 0 11: eb 00 40\n\
1064 0 11: bb 7a 00\n\
1065 0 11: bb 7d 00\n\
1066 0 11: bb 7f 00\n\
1067 0 11: bb 65 00\n\
1068 0 11: bb 64 00\n\
1069 0 11: bb 06 02\n\
1070 0 11: bb 26 00\n\
1071 0 12: ec 00 40\n\
1072 0 12: bc 7a 00\n\
1073 0 12: bc 7d 00\n\
1074 0 12: bc 7f 00\n\
1075 0 12: bc 65 00\n\
1076 0 12: bc 64 00\n\
1077 0 12: bc 06 02\n\
1078 0 12: bc 26 00\n\
1079 0 13: ed 00 40\n\
1080 0 13: bd 7a 00\n\
1081 0 13: bd 7d 00\n\
1082 0 13: bd 7f 00\n\
1083 0 13: bd 65 00\n\
1084 0 13: bd 64 00\n\
1085 0 13: bd 06 02\n\
1086 0 13: bd 26 00\n\
1087 0 14: ee 00 40\n\
1088 0 14: be 7a 00\n\
1089 0 14: be 7d 00\n\
1090 0 14: be 7f 00\n\
1091 0 14: be 65 00\n\
1092 0 14: be 64 00\n\
1093 0 14: be 06 02\n\
1094 0 14: be 26 00\n\
1095 0 15: ef 00 40\n\
1096 0 15: bf 7a 00\n\
1097 0 15: bf 7d 00\n\
1098 0 15: bf 7f 00\n\
1099 0 15: bf 65 00\n\
1100 0 15: bf 64 00\n\
1101 0 15: bf 06 02\n\
1102 0 15: bf 26 00\n\
1103 21711080 0: 90 3c 7f\n\
1104 32310240 1: 91 40 1f\n\
1105 42640240 1: 81 40 40\n\
1106 52970240 2: 92 43 3f\n\
1107 63300240 2: 82 43 40\n\
1108 77209720 3: 93 34 7f\n\
1109 90738200 3: 83 34 40\n\
1110 104248200 0: 80 3c 7f\n\
1111 104248200 ...closed.\n\
1112 "),__LINE__,(__FILE__)));
1113 
1114  sleep(1);
1115 
1117 
1118  CPPUNIT_ASSERT(out->Check(("\
1119 0 Opened...\n\
1120 0 0: e0 00 40\n\
1121 0 0: b0 7a 00\n\
1122 0 0: b0 7d 00\n\
1123 0 0: b0 7f 00\n\
1124 0 0: b0 65 00\n\
1125 0 0: b0 64 00\n\
1126 0 0: b0 06 02\n\
1127 0 0: b0 26 00\n\
1128 0 1: e1 00 40\n\
1129 0 1: b1 7a 00\n\
1130 0 1: b1 7d 00\n\
1131 0 1: b1 7f 00\n\
1132 0 1: b1 65 00\n\
1133 0 1: b1 64 00\n\
1134 0 1: b1 06 02\n\
1135 0 1: b1 26 00\n\
1136 0 2: e2 00 40\n\
1137 0 2: b2 7a 00\n\
1138 0 2: b2 7d 00\n\
1139 0 2: b2 7f 00\n\
1140 0 2: b2 65 00\n\
1141 0 2: b2 64 00\n\
1142 0 2: b2 06 02\n\
1143 0 2: b2 26 00\n\
1144 0 3: e3 00 40\n\
1145 0 3: b3 7a 00\n\
1146 0 3: b3 7d 00\n\
1147 0 3: b3 7f 00\n\
1148 0 3: b3 65 00\n\
1149 0 3: b3 64 00\n\
1150 0 3: b3 06 02\n\
1151 0 3: b3 26 00\n\
1152 0 4: e4 00 40\n\
1153 0 4: b4 7a 00\n\
1154 0 4: b4 7d 00\n\
1155 0 4: b4 7f 00\n\
1156 0 4: b4 65 00\n\
1157 0 4: b4 64 00\n\
1158 0 4: b4 06 02\n\
1159 0 4: b4 26 00\n\
1160 0 5: e5 00 40\n\
1161 0 5: b5 7a 00\n\
1162 0 5: b5 7d 00\n\
1163 0 5: b5 7f 00\n\
1164 0 5: b5 65 00\n\
1165 0 5: b5 64 00\n\
1166 0 5: b5 06 02\n\
1167 0 5: b5 26 00\n\
1168 0 6: e6 00 40\n\
1169 0 6: b6 7a 00\n\
1170 0 6: b6 7d 00\n\
1171 0 6: b6 7f 00\n\
1172 0 6: b6 65 00\n\
1173 0 6: b6 64 00\n\
1174 0 6: b6 06 02\n\
1175 0 6: b6 26 00\n\
1176 0 7: e7 00 40\n\
1177 0 7: b7 7a 00\n\
1178 0 7: b7 7d 00\n\
1179 0 7: b7 7f 00\n\
1180 0 7: b7 65 00\n\
1181 0 7: b7 64 00\n\
1182 0 7: b7 06 02\n\
1183 0 7: b7 26 00\n\
1184 0 8: e8 00 40\n\
1185 0 8: b8 7a 00\n\
1186 0 8: b8 7d 00\n\
1187 0 8: b8 7f 00\n\
1188 0 8: b8 65 00\n\
1189 0 8: b8 64 00\n\
1190 0 8: b8 06 02\n\
1191 0 8: b8 26 00\n\
1192 0 9: e9 00 40\n\
1193 0 9: b9 7a 00\n\
1194 0 9: b9 7d 00\n\
1195 0 9: b9 7f 00\n\
1196 0 9: b9 65 00\n\
1197 0 9: b9 64 00\n\
1198 0 9: b9 06 02\n\
1199 0 9: b9 26 00\n\
1200 0 10: ea 00 40\n\
1201 0 10: ba 7a 00\n\
1202 0 10: ba 7d 00\n\
1203 0 10: ba 7f 00\n\
1204 0 10: ba 65 00\n\
1205 0 10: ba 64 00\n\
1206 0 10: ba 06 02\n\
1207 0 10: ba 26 00\n\
1208 0 11: eb 00 40\n\
1209 0 11: bb 7a 00\n\
1210 0 11: bb 7d 00\n\
1211 0 11: bb 7f 00\n\
1212 0 11: bb 65 00\n\
1213 0 11: bb 64 00\n\
1214 0 11: bb 06 02\n\
1215 0 11: bb 26 00\n\
1216 0 12: ec 00 40\n\
1217 0 12: bc 7a 00\n\
1218 0 12: bc 7d 00\n\
1219 0 12: bc 7f 00\n\
1220 0 12: bc 65 00\n\
1221 0 12: bc 64 00\n\
1222 0 12: bc 06 02\n\
1223 0 12: bc 26 00\n\
1224 0 13: ed 00 40\n\
1225 0 13: bd 7a 00\n\
1226 0 13: bd 7d 00\n\
1227 0 13: bd 7f 00\n\
1228 0 13: bd 65 00\n\
1229 0 13: bd 64 00\n\
1230 0 13: bd 06 02\n\
1231 0 13: bd 26 00\n\
1232 0 14: ee 00 40\n\
1233 0 14: be 7a 00\n\
1234 0 14: be 7d 00\n\
1235 0 14: be 7f 00\n\
1236 0 14: be 65 00\n\
1237 0 14: be 64 00\n\
1238 0 14: be 06 02\n\
1239 0 14: be 26 00\n\
1240 0 15: ef 00 40\n\
1241 0 15: bf 7a 00\n\
1242 0 15: bf 7d 00\n\
1243 0 15: bf 7f 00\n\
1244 0 15: bf 65 00\n\
1245 0 15: bf 64 00\n\
1246 0 15: bf 06 02\n\
1247 0 15: bf 26 00\n\
1248 21711080 0: 90 3c 7f\n\
1249 32310240 1: 91 40 1f\n\
1250 42640240 1: 81 40 40\n\
1251 52970240 2: 92 43 3f\n\
1252 63300240 2: 82 43 40\n\
1253 77209720 3: 93 34 7f\n\
1254 90738200 3: 83 34 40\n\
1255 104248200 0: 80 3c 7f\n\
1256 104248200 ...closed.\n\
1257 "),__LINE__,(__FILE__)));
1258 }
mutabor::InputDevice in
Definition: DevMidFTest.h:84
static const listtype & GetBoxList()
Definition: Box.h:340
static const routeListType & GetRouteList()
Definition: Route.h:404
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:458
not for headers
Definition: midicmnTest.h:67
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
void SetBendingRange(int br)
Definition: midicmn.h:552
bool Check(std::string s, int line=-1, std::string filename=(__FILE__))
Definition: midicmnTest.h:88
static Box Create(int type, int id=NewBox)
Definition: Box.h:899
static const listtype & GetDeviceList()
Definition: Device.h:752
static bool BatchPlay()
Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex...
Definition: Device.cpp:446
CurrentTimer CurrentTime
Definition: timing.cpp:43
static Route Create()
Creates a generic route.
Definition: Route.h:595
void InputMidiFileTest::testBug019010_2 ( )

Definiert in Zeile 587 der Datei DevMidFTest.cpp.

Benutzt mutabor::Box0, midicmnOutputDevice::Check(), mutabor::CommonMidiOutput< T, D >::Close(), mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, DEBUGLOG, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), InputMidiFileTest::in, MUTABOR_NO_DELTA, mutint64, mutabor::CommonMidiOutput< T, D >::SetBendingRange() und mutabor::CurrentTimer::UseRealtime().

588 {
589 #ifdef DEBUG
590 // mutabor_debug_flags.timer = true;
591 // mutabor_debug_flags.midiio = true;
592 // mutabor_debug_flags.midifile = true;
593 #endif
594 
595  // input device is created during setUp
596  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().size() == 1);
597  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
598  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
599  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
600 
602  midicmnOutputDevice * out;
603  mutabor::ScopedBox box(NULL);
604  mutabor::ScopedRoute route;
606 
609  connect(route,box);
610 
612  out = new midicmnOutputDevice(("Test"));
613  out->SetBendingRange(2);
614  //out = new midicmnOutputDevice(3,("Test"));
615  guard = out;
616 
617  connect(route,guard);
618  route->SetOutputFrom (0);
619  route->SetOutputTo (15);
620  route->OutputAvoidDrumChannel (true);
621 
622  connect(route, in);
623 
624  CPPUNIT_ASSERT( in );
625  in -> SetName(SRCDIR "/bug019010.mid");
626 
627 
628  // First check: Input device provides the correct delta times
631 
632  CPPUNIT_ASSERT((out -> Open()));
633  CPPUNIT_ASSERT((in -> Open()));
634  CPPUNIT_ASSERT(out->Check(("0 Opened...\n\
635 0 0: e0 00 40\n\
636 0 0: b0 7a 00\n\
637 0 0: b0 7d 00\n\
638 0 0: b0 7f 00\n\
639 0 0: b0 65 00\n\
640 0 0: b0 64 00\n\
641 0 0: b0 06 02\n\
642 0 0: b0 26 00\n\
643 0 1: e1 00 40\n\
644 0 1: b1 7a 00\n\
645 0 1: b1 7d 00\n\
646 0 1: b1 7f 00\n\
647 0 1: b1 65 00\n\
648 0 1: b1 64 00\n\
649 0 1: b1 06 02\n\
650 0 1: b1 26 00\n\
651 0 2: e2 00 40\n\
652 0 2: b2 7a 00\n\
653 0 2: b2 7d 00\n\
654 0 2: b2 7f 00\n\
655 0 2: b2 65 00\n\
656 0 2: b2 64 00\n\
657 0 2: b2 06 02\n\
658 0 2: b2 26 00\n\
659 0 3: e3 00 40\n\
660 0 3: b3 7a 00\n\
661 0 3: b3 7d 00\n\
662 0 3: b3 7f 00\n\
663 0 3: b3 65 00\n\
664 0 3: b3 64 00\n\
665 0 3: b3 06 02\n\
666 0 3: b3 26 00\n\
667 0 4: e4 00 40\n\
668 0 4: b4 7a 00\n\
669 0 4: b4 7d 00\n\
670 0 4: b4 7f 00\n\
671 0 4: b4 65 00\n\
672 0 4: b4 64 00\n\
673 0 4: b4 06 02\n\
674 0 4: b4 26 00\n\
675 0 5: e5 00 40\n\
676 0 5: b5 7a 00\n\
677 0 5: b5 7d 00\n\
678 0 5: b5 7f 00\n\
679 0 5: b5 65 00\n\
680 0 5: b5 64 00\n\
681 0 5: b5 06 02\n\
682 0 5: b5 26 00\n\
683 0 6: e6 00 40\n\
684 0 6: b6 7a 00\n\
685 0 6: b6 7d 00\n\
686 0 6: b6 7f 00\n\
687 0 6: b6 65 00\n\
688 0 6: b6 64 00\n\
689 0 6: b6 06 02\n\
690 0 6: b6 26 00\n\
691 0 7: e7 00 40\n\
692 0 7: b7 7a 00\n\
693 0 7: b7 7d 00\n\
694 0 7: b7 7f 00\n\
695 0 7: b7 65 00\n\
696 0 7: b7 64 00\n\
697 0 7: b7 06 02\n\
698 0 7: b7 26 00\n\
699 0 8: e8 00 40\n\
700 0 8: b8 7a 00\n\
701 0 8: b8 7d 00\n\
702 0 8: b8 7f 00\n\
703 0 8: b8 65 00\n\
704 0 8: b8 64 00\n\
705 0 8: b8 06 02\n\
706 0 8: b8 26 00\n\
707 0 9: e9 00 40\n\
708 0 9: b9 7a 00\n\
709 0 9: b9 7d 00\n\
710 0 9: b9 7f 00\n\
711 0 9: b9 65 00\n\
712 0 9: b9 64 00\n\
713 0 9: b9 06 02\n\
714 0 9: b9 26 00\n\
715 0 10: ea 00 40\n\
716 0 10: ba 7a 00\n\
717 0 10: ba 7d 00\n\
718 0 10: ba 7f 00\n\
719 0 10: ba 65 00\n\
720 0 10: ba 64 00\n\
721 0 10: ba 06 02\n\
722 0 10: ba 26 00\n\
723 0 11: eb 00 40\n\
724 0 11: bb 7a 00\n\
725 0 11: bb 7d 00\n\
726 0 11: bb 7f 00\n\
727 0 11: bb 65 00\n\
728 0 11: bb 64 00\n\
729 0 11: bb 06 02\n\
730 0 11: bb 26 00\n\
731 0 12: ec 00 40\n\
732 0 12: bc 7a 00\n\
733 0 12: bc 7d 00\n\
734 0 12: bc 7f 00\n\
735 0 12: bc 65 00\n\
736 0 12: bc 64 00\n\
737 0 12: bc 06 02\n\
738 0 12: bc 26 00\n\
739 0 13: ed 00 40\n\
740 0 13: bd 7a 00\n\
741 0 13: bd 7d 00\n\
742 0 13: bd 7f 00\n\
743 0 13: bd 65 00\n\
744 0 13: bd 64 00\n\
745 0 13: bd 06 02\n\
746 0 13: bd 26 00\n\
747 0 14: ee 00 40\n\
748 0 14: be 7a 00\n\
749 0 14: be 7d 00\n\
750 0 14: be 7f 00\n\
751 0 14: be 65 00\n\
752 0 14: be 64 00\n\
753 0 14: be 06 02\n\
754 0 14: be 26 00\n\
755 0 15: ef 00 40\n\
756 0 15: bf 7a 00\n\
757 0 15: bf 7d 00\n\
758 0 15: bf 7f 00\n\
759 0 15: bf 65 00\n\
760 0 15: bf 64 00\n\
761 0 15: bf 06 02\n\
762 0 15: bf 26 00\n"),__LINE__,(__FILE__)));
763 
764 // in -> Play(wxTHREAD_JOINABLE);
765 // mutabor::InputDeviceClass::BatchPlay();
766  in -> Play();
767  mutint64 delta = in -> PrepareNextEvent();
768  DEBUGLOG (midiio, "delta = %d" ,delta);
769  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
770  CPPUNIT_ASSERT(delta == 1086);
771 
772  delta = in -> PrepareNextEvent();
773  DEBUGLOG (midiio, "delta = %d" ,delta);
774  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
775  CPPUNIT_ASSERT(delta == 1954800);
776 
777  delta = in -> PrepareNextEvent();
778  DEBUGLOG (midiio, "delta = %d" ,delta);
779  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
780  CPPUNIT_ASSERT(delta == 14725074);
781 
782  delta = in -> PrepareNextEvent();
783  DEBUGLOG (midiio, "delta = %d" ,delta);
784  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
785  CPPUNIT_ASSERT(delta == 130320);
786 
787  delta = in -> PrepareNextEvent();
788  DEBUGLOG (midiio, "delta = %d" ,delta);
789  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
790  CPPUNIT_ASSERT(delta == 130200);
791 
792  delta = in -> PrepareNextEvent();
793  DEBUGLOG (midiio, "delta = %d" ,delta);
794  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
795  CPPUNIT_ASSERT(delta == 4769600);
796 
797  delta = in -> PrepareNextEvent();
798  DEBUGLOG (midiio, "delta = %d" ,delta);
799  CPPUNIT_ASSERT(out->Check(("\
800 0 0: 90 3c 7f\n\
801 "),
802  __LINE__,(__FILE__)));
803  CPPUNIT_ASSERT(delta == 6287200);
804 
805  delta = in -> PrepareNextEvent();
806  DEBUGLOG (midiio, "delta = %d" ,delta);
807  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
808  CPPUNIT_ASSERT(delta == 845040);
809 
810  delta = in -> PrepareNextEvent();
811  DEBUGLOG (midiio, "delta = %d" ,delta);
812  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
813  CPPUNIT_ASSERT(delta == 120000);
814 
815  delta = in -> PrepareNextEvent();
816  DEBUGLOG (midiio, "delta = %d" ,delta);
817  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
818  CPPUNIT_ASSERT(delta == 123960);
819 
820  delta = in -> PrepareNextEvent();
821  DEBUGLOG (midiio, "delta = %d" ,delta);
822  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
823  CPPUNIT_ASSERT(delta == 3222960);
824 
825  delta = in -> PrepareNextEvent();
826  DEBUGLOG (midiio, "delta = %d" ,delta);
827  CPPUNIT_ASSERT(out->Check(("\
828 0 1: 91 40 1f\n\
829 "),__LINE__,(__FILE__)));
830  CPPUNIT_ASSERT(delta == 10330000);
831 
832  delta = in -> PrepareNextEvent();
833  DEBUGLOG (midiio, "delta = %d" ,delta);
834  CPPUNIT_ASSERT(out->Check(("\
835 0 1: 81 40 40\n\
836 "),__LINE__,(__FILE__)));
837  CPPUNIT_ASSERT(delta == 10330000);
838 
839  delta = in -> PrepareNextEvent();
840  DEBUGLOG (midiio, "delta = %d" ,delta);
841  CPPUNIT_ASSERT(out->Check(("\
842 0 2: 92 43 3f\n\
843 "),__LINE__,(__FILE__)));
844  CPPUNIT_ASSERT(delta == 10330000);
845 
846  delta = in -> PrepareNextEvent();
847  DEBUGLOG (midiio, "delta = %d" ,delta);
848  CPPUNIT_ASSERT(out->Check(("0 2: 82 43 40\n"),__LINE__,(__FILE__)));
849  CPPUNIT_ASSERT(delta == 7809480);
850 
851  delta = in -> PrepareNextEvent();
852  DEBUGLOG (midiio, "delta = %d" ,delta);
853  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
854  CPPUNIT_ASSERT(delta == 6100000);
855 
856  delta = in -> PrepareNextEvent();
857  DEBUGLOG (midiio, "delta = %d" ,delta);
858  CPPUNIT_ASSERT(out->Check(("\
859 0 3: 93 34 7f\n\
860 "),__LINE__,(__FILE__)));
861  CPPUNIT_ASSERT(delta == 200000);
862 
863  delta = in -> PrepareNextEvent();
864  DEBUGLOG (midiio, "delta = %d" ,delta);
865  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
866  CPPUNIT_ASSERT(delta == 146280);
867 
868  delta = in -> PrepareNextEvent();
869  DEBUGLOG (midiio, "delta = %d" ,delta);
870  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
871  CPPUNIT_ASSERT(delta == 148080);
872 
873  delta = in -> PrepareNextEvent();
874  DEBUGLOG (midiio, "delta = %d" ,delta);
875  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
876  CPPUNIT_ASSERT(delta == 150000);
877 
878  delta = in -> PrepareNextEvent();
879  DEBUGLOG (midiio, "delta = %d" ,delta);
880  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
881  CPPUNIT_ASSERT(delta == 151800);
882 
883  delta = in -> PrepareNextEvent();
884  DEBUGLOG (midiio, "delta = %d" ,delta);
885  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
886  CPPUNIT_ASSERT(delta == 153840);
887 
888  delta = in -> PrepareNextEvent();
889  DEBUGLOG (midiio, "delta = %d" ,delta);
890  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
891  CPPUNIT_ASSERT(delta == 155760);
892 
893  delta = in -> PrepareNextEvent();
894  DEBUGLOG (midiio, "delta = %d" ,delta);
895  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
896  CPPUNIT_ASSERT(delta == 157800);
897 
898  delta = in -> PrepareNextEvent();
899  DEBUGLOG (midiio, "delta = %d" ,delta);
900  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
901  CPPUNIT_ASSERT(delta == 159960);
902 
903  delta = in -> PrepareNextEvent();
904  DEBUGLOG (midiio, "delta = %d" ,delta);
905  CPPUNIT_ASSERT(out->Check((""),__LINE__,(__FILE__)));
906  CPPUNIT_ASSERT(delta == 12104960);
907 
908  delta = in -> PrepareNextEvent();
909  DEBUGLOG (midiio, "delta = %d" ,delta);
910  CPPUNIT_ASSERT(out->Check(("0 3: 83 34 40\n"),__LINE__,(__FILE__)));
911  CPPUNIT_ASSERT(delta == 13510000);
912 
913  delta = in -> PrepareNextEvent();
914  DEBUGLOG (midiio, "delta = %d" ,delta);
915  CPPUNIT_ASSERT(out->Check(("0 0: 80 3c 7f\n"),__LINE__,(__FILE__)));
916  CPPUNIT_ASSERT(delta == MUTABOR_NO_DELTA);
917 
918  in->Close();
919  out->Close();
920  CPPUNIT_ASSERT(out->Check(("0 ...closed.\n"),__LINE__,(__FILE__)));
921 
922 }
#define DEBUGLOG(level,...)
Definition: debug.h:240
mutabor::InputDevice in
Definition: DevMidFTest.h:84
static const listtype & GetBoxList()
Definition: Box.h:340
static const routeListType & GetRouteList()
Definition: Route.h:404
#define MUTABOR_NO_DELTA
Definition: timing.h:62
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:458
not for headers
Definition: midicmnTest.h:67
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
#define mutint64
Definition: Defs.h:89
void SetBendingRange(int br)
Definition: midicmn.h:552
bool Check(std::string s, int line=-1, std::string filename=(__FILE__))
Definition: midicmnTest.h:88
static Box Create(int type, int id=NewBox)
Definition: Box.h:899
static const listtype & GetDeviceList()
Definition: Device.h:752
CurrentTimer CurrentTime
Definition: timing.cpp:43
static Route Create()
Creates a generic route.
Definition: Route.h:595
void InputMidiFileTest::testControllerPlay ( )

Definiert in Zeile 1911 der Datei DevMidFTest.cpp.

Benutzt mutabor::InputDeviceClass::BatchPlay(), mutabor::Box0, midicmnOutputDevice::Check(), mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), InputMidiFileTest::in, mutabor::CommonMidiOutput< T, D >::SetBendingRange() und mutabor::CurrentTimer::UseRealtime().

1912 {
1913 #ifdef DEBUG
1914 // mutabor_debug_flags.timer = true;
1915 // mutabor_debug_flags.midiio = true;
1916 // mutabor_debug_flags.midifile = true;
1917 #endif
1918 
1919  // input device is set up during setUp
1920  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().size() == 1);
1921  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
1922  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
1923  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
1924 
1926  midicmnOutputDevice * out;
1927  mutabor::ScopedBox box(NULL);
1928  mutabor::ScopedRoute route;
1930 
1933  connect(route,box);
1934 
1936  out = new midicmnOutputDevice(("Test"));
1937  out->SetBendingRange(2);
1938  //out = new midicmnOutputDevice(3,("Test"));
1939  guard = out;
1940 
1941  connect(route,guard);
1942  route->SetOutputFrom (0);
1943  route->SetOutputTo (15);
1944  route->OutputAvoidDrumChannel (true);
1945 
1946  connect(route, in);
1947 
1948  CPPUNIT_ASSERT( in );
1949  in -> SetName(SRCDIR "/controller.mid");
1950 
1951 
1952  // First check: Input device provides the correct delta times
1955 
1956 // in -> Play(wxTHREAD_JOINABLE);
1958 
1959  CPPUNIT_ASSERT(out->Check(("\
1960 0 Opened...\n\
1961 0 0: e0 00 40\n\
1962 0 0: b0 7a 00\n\
1963 0 0: b0 7d 00\n\
1964 0 0: b0 7f 00\n\
1965 0 0: b0 65 00\n\
1966 0 0: b0 64 00\n\
1967 0 0: b0 06 02\n\
1968 0 0: b0 26 00\n\
1969 0 1: e1 00 40\n\
1970 0 1: b1 7a 00\n\
1971 0 1: b1 7d 00\n\
1972 0 1: b1 7f 00\n\
1973 0 1: b1 65 00\n\
1974 0 1: b1 64 00\n\
1975 0 1: b1 06 02\n\
1976 0 1: b1 26 00\n\
1977 0 2: e2 00 40\n\
1978 0 2: b2 7a 00\n\
1979 0 2: b2 7d 00\n\
1980 0 2: b2 7f 00\n\
1981 0 2: b2 65 00\n\
1982 0 2: b2 64 00\n\
1983 0 2: b2 06 02\n\
1984 0 2: b2 26 00\n\
1985 0 3: e3 00 40\n\
1986 0 3: b3 7a 00\n\
1987 0 3: b3 7d 00\n\
1988 0 3: b3 7f 00\n\
1989 0 3: b3 65 00\n\
1990 0 3: b3 64 00\n\
1991 0 3: b3 06 02\n\
1992 0 3: b3 26 00\n\
1993 0 4: e4 00 40\n\
1994 0 4: b4 7a 00\n\
1995 0 4: b4 7d 00\n\
1996 0 4: b4 7f 00\n\
1997 0 4: b4 65 00\n\
1998 0 4: b4 64 00\n\
1999 0 4: b4 06 02\n\
2000 0 4: b4 26 00\n\
2001 0 5: e5 00 40\n\
2002 0 5: b5 7a 00\n\
2003 0 5: b5 7d 00\n\
2004 0 5: b5 7f 00\n\
2005 0 5: b5 65 00\n\
2006 0 5: b5 64 00\n\
2007 0 5: b5 06 02\n\
2008 0 5: b5 26 00\n\
2009 0 6: e6 00 40\n\
2010 0 6: b6 7a 00\n\
2011 0 6: b6 7d 00\n\
2012 0 6: b6 7f 00\n\
2013 0 6: b6 65 00\n\
2014 0 6: b6 64 00\n\
2015 0 6: b6 06 02\n\
2016 0 6: b6 26 00\n\
2017 0 7: e7 00 40\n\
2018 0 7: b7 7a 00\n\
2019 0 7: b7 7d 00\n\
2020 0 7: b7 7f 00\n\
2021 0 7: b7 65 00\n\
2022 0 7: b7 64 00\n\
2023 0 7: b7 06 02\n\
2024 0 7: b7 26 00\n\
2025 0 8: e8 00 40\n\
2026 0 8: b8 7a 00\n\
2027 0 8: b8 7d 00\n\
2028 0 8: b8 7f 00\n\
2029 0 8: b8 65 00\n\
2030 0 8: b8 64 00\n\
2031 0 8: b8 06 02\n\
2032 0 8: b8 26 00\n\
2033 0 9: e9 00 40\n\
2034 0 9: b9 7a 00\n\
2035 0 9: b9 7d 00\n\
2036 0 9: b9 7f 00\n\
2037 0 9: b9 65 00\n\
2038 0 9: b9 64 00\n\
2039 0 9: b9 06 02\n\
2040 0 9: b9 26 00\n\
2041 0 10: ea 00 40\n\
2042 0 10: ba 7a 00\n\
2043 0 10: ba 7d 00\n\
2044 0 10: ba 7f 00\n\
2045 0 10: ba 65 00\n\
2046 0 10: ba 64 00\n\
2047 0 10: ba 06 02\n\
2048 0 10: ba 26 00\n\
2049 0 11: eb 00 40\n\
2050 0 11: bb 7a 00\n\
2051 0 11: bb 7d 00\n\
2052 0 11: bb 7f 00\n\
2053 0 11: bb 65 00\n\
2054 0 11: bb 64 00\n\
2055 0 11: bb 06 02\n\
2056 0 11: bb 26 00\n\
2057 0 12: ec 00 40\n\
2058 0 12: bc 7a 00\n\
2059 0 12: bc 7d 00\n\
2060 0 12: bc 7f 00\n\
2061 0 12: bc 65 00\n\
2062 0 12: bc 64 00\n\
2063 0 12: bc 06 02\n\
2064 0 12: bc 26 00\n\
2065 0 13: ed 00 40\n\
2066 0 13: bd 7a 00\n\
2067 0 13: bd 7d 00\n\
2068 0 13: bd 7f 00\n\
2069 0 13: bd 65 00\n\
2070 0 13: bd 64 00\n\
2071 0 13: bd 06 02\n\
2072 0 13: bd 26 00\n\
2073 0 14: ee 00 40\n\
2074 0 14: be 7a 00\n\
2075 0 14: be 7d 00\n\
2076 0 14: be 7f 00\n\
2077 0 14: be 65 00\n\
2078 0 14: be 64 00\n\
2079 0 14: be 06 02\n\
2080 0 14: be 26 00\n\
2081 0 15: ef 00 40\n\
2082 0 15: bf 7a 00\n\
2083 0 15: bf 7d 00\n\
2084 0 15: bf 7f 00\n\
2085 0 15: bf 65 00\n\
2086 0 15: bf 64 00\n\
2087 0 15: bf 06 02\n\
2088 0 15: bf 26 00\n\
2089 0 0: 90 3c 7f\n\
2090 1 0: b0 00 37\n\
2091 2 0: b0 00 6e\n\
2092 3 0: b0 00 00\n\
2093 4 0: b0 00 25\n\
2094 5 0: b0 01 5c\n\
2095 6 0: b0 01 13\n\
2096 7 0: b0 01 00\n\
2097 8 0: b0 01 4a\n\
2098 9 0: b0 02 01\n\
2099 10 0: b0 02 38\n\
2100 11 0: b0 02 00\n\
2101 12 0: b0 02 6f\n\
2102 13 0: b0 03 26\n\
2103 14 0: b0 03 5d\n\
2104 15 0: b0 03 00\n\
2105 16 0: b0 03 14\n\
2106 17 0: b0 04 4b\n\
2107 18 0: b0 04 02\n\
2108 19 0: b0 04 00\n\
2109 20 0: b0 04 39\n\
2110 21 0: b0 05 70\n\
2111 22 0: b0 05 27\n\
2112 23 0: b0 05 00\n\
2113 24 0: b0 05 5e\n\
2114 29 0: b0 07 3a\n\
2115 30 0: b0 07 71\n\
2116 31 0: b0 07 00\n\
2117 32 0: b0 07 28\n\
2118 33 0: b0 08 5f\n\
2119 34 0: b0 08 16\n\
2120 35 0: b0 08 00\n\
2121 36 0: b0 08 4d\n\
2122 37 0: b0 09 04\n\
2123 38 0: b0 09 3b\n\
2124 39 0: b0 09 00\n\
2125 40 0: b0 09 72\n\
2126 41 0: b0 0a 29\n\
2127 42 0: b0 0a 60\n\
2128 43 0: b0 0a 00\n\
2129 44 0: b0 0a 17\n\
2130 45 0: b0 0b 4e\n\
2131 46 0: b0 0b 05\n\
2132 47 0: b0 0b 00\n\
2133 48 0: b0 0b 3c\n\
2134 49 0: b0 0c 73\n\
2135 50 0: b0 0c 2a\n\
2136 51 0: b0 0c 00\n\
2137 52 0: b0 0c 61\n\
2138 53 0: b0 0d 18\n\
2139 54 0: b0 0d 4f\n\
2140 55 0: b0 0d 00\n\
2141 56 0: b0 0d 06\n\
2142 57 0: b0 0e 3d\n\
2143 58 0: b0 0e 74\n\
2144 59 0: b0 0e 00\n\
2145 60 0: b0 0e 2b\n\
2146 61 0: b0 0f 62\n\
2147 62 0: b0 0f 19\n\
2148 63 0: b0 0f 00\n\
2149 64 0: b0 0f 50\n\
2150 65 0: b0 10 07\n\
2151 66 0: b0 10 3e\n\
2152 67 0: b0 10 00\n\
2153 68 0: b0 10 75\n\
2154 69 0: b0 11 2c\n\
2155 70 0: b0 11 63\n\
2156 71 0: b0 11 00\n\
2157 72 0: b0 11 1a\n\
2158 73 0: b0 12 51\n\
2159 74 0: b0 12 08\n\
2160 75 0: b0 12 00\n\
2161 76 0: b0 12 3f\n\
2162 77 0: b0 13 76\n\
2163 78 0: b0 13 2d\n\
2164 79 0: b0 13 00\n\
2165 80 0: b0 13 64\n\
2166 81 0: b0 14 1b\n\
2167 82 0: b0 14 52\n\
2168 83 0: b0 14 00\n\
2169 84 0: b0 14 09\n\
2170 85 0: b0 15 40\n\
2171 86 0: b0 15 77\n\
2172 87 0: b0 15 00\n\
2173 88 0: b0 15 2e\n\
2174 89 0: b0 16 65\n\
2175 90 0: b0 16 1c\n\
2176 91 0: b0 16 00\n\
2177 92 0: b0 16 53\n\
2178 93 0: b0 17 0a\n\
2179 94 0: b0 17 41\n\
2180 95 0: b0 17 00\n\
2181 96 0: b0 17 78\n\
2182 97 0: b0 18 2f\n\
2183 98 0: b0 18 66\n\
2184 99 0: b0 18 00\n\
2185 100 0: b0 18 1d\n\
2186 101 0: b0 19 54\n\
2187 102 0: b0 19 0b\n\
2188 103 0: b0 19 00\n\
2189 104 0: b0 19 42\n\
2190 105 0: b0 1a 79\n\
2191 106 0: b0 1a 30\n\
2192 107 0: b0 1a 00\n\
2193 108 0: b0 1a 67\n\
2194 109 0: b0 1b 1e\n\
2195 110 0: b0 1b 55\n\
2196 111 0: b0 1b 00\n\
2197 112 0: b0 1b 0c\n\
2198 113 0: b0 1c 43\n\
2199 114 0: b0 1c 7a\n\
2200 115 0: b0 1c 00\n\
2201 116 0: b0 1c 31\n\
2202 117 0: b0 1d 68\n\
2203 118 0: b0 1d 1f\n\
2204 119 0: b0 1d 00\n\
2205 120 0: b0 1d 56\n\
2206 121 0: b0 1e 0d\n\
2207 122 0: b0 1e 44\n\
2208 123 0: b0 1e 00\n\
2209 124 0: b0 1e 7b\n\
2210 125 0: b0 1f 32\n\
2211 126 0: b0 1f 69\n\
2212 127 0: b0 1f 00\n\
2213 128 0: b0 1f 20\n\
2214 129 0: b0 20 57\n\
2215 130 0: b0 20 0e\n\
2216 131 0: b0 20 00\n\
2217 132 0: b0 20 45\n\
2218 133 0: b0 21 7c\n\
2219 134 0: b0 21 33\n\
2220 135 0: b0 21 00\n\
2221 136 0: b0 21 6a\n\
2222 137 0: b0 22 21\n\
2223 138 0: b0 22 58\n\
2224 139 0: b0 22 00\n\
2225 140 0: b0 22 0f\n\
2226 141 0: b0 23 46\n\
2227 142 0: b0 23 7d\n\
2228 143 0: b0 23 00\n\
2229 144 0: b0 23 34\n\
2230 145 0: b0 24 6b\n\
2231 146 0: b0 24 22\n\
2232 147 0: b0 24 00\n\
2233 148 0: b0 24 59\n\
2234 149 0: b0 25 10\n\
2235 150 0: b0 25 47\n\
2236 151 0: b0 25 00\n\
2237 152 0: b0 25 7e\n\
2238 157 0: b0 27 5a\n\
2239 158 0: b0 27 11\n\
2240 159 0: b0 27 00\n\
2241 160 0: b0 27 48\n\
2242 161 0: b0 28 7f\n\
2243 162 0: b0 28 36\n\
2244 163 0: b0 28 00\n\
2245 164 0: b0 28 6d\n\
2246 165 0: b0 29 24\n\
2247 166 0: b0 29 5b\n\
2248 167 0: b0 29 00\n\
2249 168 0: b0 29 12\n\
2250 169 0: b0 2a 49\n\
2251 170 0: b0 2a 00\n\
2252 172 0: b0 2a 37\n\
2253 173 0: b0 2b 6e\n\
2254 174 0: b0 2b 25\n\
2255 175 0: b0 2b 00\n\
2256 176 0: b0 2b 5c\n\
2257 177 0: b0 2c 13\n\
2258 178 0: b0 2c 4a\n\
2259 179 0: b0 2c 00\n\
2260 180 0: b0 2c 01\n\
2261 181 0: b0 2d 38\n\
2262 182 0: b0 2d 6f\n\
2263 183 0: b0 2d 00\n\
2264 184 0: b0 2d 26\n\
2265 185 0: b0 2e 5d\n\
2266 186 0: b0 2e 14\n\
2267 187 0: b0 2e 00\n\
2268 188 0: b0 2e 4b\n\
2269 189 0: b0 2f 02\n\
2270 190 0: b0 2f 39\n\
2271 191 0: b0 2f 00\n\
2272 192 0: b0 2f 70\n\
2273 193 0: b0 30 27\n\
2274 194 0: b0 30 5e\n\
2275 195 0: b0 30 00\n\
2276 196 0: b0 30 15\n\
2277 197 0: b0 31 4c\n\
2278 198 0: b0 31 03\n\
2279 199 0: b0 31 00\n\
2280 200 0: b0 31 3a\n\
2281 201 0: b0 32 71\n\
2282 202 0: b0 32 28\n\
2283 203 0: b0 32 00\n\
2284 204 0: b0 32 5f\n\
2285 205 0: b0 33 16\n\
2286 206 0: b0 33 4d\n\
2287 207 0: b0 33 00\n\
2288 208 0: b0 33 04\n\
2289 209 0: b0 34 3b\n\
2290 210 0: b0 34 72\n\
2291 211 0: b0 34 00\n\
2292 212 0: b0 34 29\n\
2293 213 0: b0 35 60\n\
2294 214 0: b0 35 17\n\
2295 215 0: b0 35 00\n\
2296 216 0: b0 35 4e\n\
2297 217 0: b0 36 05\n\
2298 218 0: b0 36 3c\n\
2299 219 0: b0 36 00\n\
2300 220 0: b0 36 73\n\
2301 221 0: b0 37 2a\n\
2302 222 0: b0 37 61\n\
2303 223 0: b0 37 00\n\
2304 224 0: b0 37 18\n\
2305 225 0: b0 38 4f\n\
2306 226 0: b0 38 06\n\
2307 227 0: b0 38 00\n\
2308 228 0: b0 38 3d\n\
2309 229 0: b0 39 74\n\
2310 230 0: b0 39 2b\n\
2311 231 0: b0 39 00\n\
2312 232 0: b0 39 62\n\
2313 233 0: b0 3a 19\n\
2314 234 0: b0 3a 50\n\
2315 235 0: b0 3a 00\n\
2316 236 0: b0 3a 07\n\
2317 237 0: b0 3b 3e\n\
2318 238 0: b0 3b 75\n\
2319 239 0: b0 3b 00\n\
2320 240 0: b0 3b 2c\n\
2321 241 0: b0 3c 63\n\
2322 242 0: b0 3c 1a\n\
2323 243 0: b0 3c 00\n\
2324 244 0: b0 3c 51\n\
2325 245 0: b0 3d 08\n\
2326 246 0: b0 3d 3f\n\
2327 247 0: b0 3d 00\n\
2328 248 0: b0 3d 76\n\
2329 249 0: b0 3e 2d\n\
2330 250 0: b0 3e 64\n\
2331 251 0: b0 3e 00\n\
2332 252 0: b0 3e 1b\n\
2333 253 0: b0 3f 52\n\
2334 254 0: b0 3f 09\n\
2335 255 0: b0 3f 00\n\
2336 256 0: b0 3f 40\n\
2337 257 0: b0 40 77\n\
2338 258 0: b0 40 2e\n\
2339 259 0: b0 40 00\n\
2340 260 0: b0 40 65\n\
2341 261 0: b0 41 1c\n\
2342 262 0: b0 41 53\n\
2343 263 0: b0 41 00\n\
2344 264 0: b0 41 0a\n\
2345 265 0: b0 42 41\n\
2346 266 0: b0 42 78\n\
2347 267 0: b0 42 00\n\
2348 268 0: b0 42 2f\n\
2349 269 0: b0 43 66\n\
2350 270 0: b0 43 1d\n\
2351 271 0: b0 43 00\n\
2352 272 0: b0 43 54\n\
2353 273 0: b0 44 0b\n\
2354 274 0: b0 44 42\n\
2355 275 0: b0 44 00\n\
2356 276 0: b0 44 79\n\
2357 277 0: b0 45 30\n\
2358 278 0: b0 45 67\n\
2359 279 0: b0 45 00\n\
2360 280 0: b0 45 1e\n\
2361 281 0: b0 46 55\n\
2362 282 0: b0 46 0c\n\
2363 283 0: b0 46 00\n\
2364 284 0: b0 46 43\n\
2365 285 0: b0 47 7a\n\
2366 286 0: b0 47 31\n\
2367 287 0: b0 47 00\n\
2368 288 0: b0 47 68\n\
2369 289 0: b0 48 1f\n\
2370 290 0: b0 48 56\n\
2371 291 0: b0 48 00\n\
2372 292 0: b0 48 0d\n\
2373 293 0: b0 49 44\n\
2374 294 0: b0 49 7b\n\
2375 295 0: b0 49 00\n\
2376 296 0: b0 49 32\n\
2377 297 0: b0 4a 69\n\
2378 298 0: b0 4a 20\n\
2379 299 0: b0 4a 00\n\
2380 300 0: b0 4a 57\n\
2381 301 0: b0 4b 0e\n\
2382 302 0: b0 4b 45\n\
2383 303 0: b0 4b 00\n\
2384 304 0: b0 4b 7c\n\
2385 305 0: b0 4c 33\n\
2386 306 0: b0 4c 6a\n\
2387 307 0: b0 4c 00\n\
2388 308 0: b0 4c 21\n\
2389 309 0: b0 4d 58\n\
2390 310 0: b0 4d 0f\n\
2391 311 0: b0 4d 00\n\
2392 312 0: b0 4d 46\n\
2393 313 0: b0 4e 7d\n\
2394 314 0: b0 4e 34\n\
2395 315 0: b0 4e 00\n\
2396 316 0: b0 4e 6b\n\
2397 317 0: b0 4f 22\n\
2398 318 0: b0 4f 59\n\
2399 319 0: b0 4f 00\n\
2400 320 0: b0 4f 10\n\
2401 321 0: b0 50 47\n\
2402 322 0: b0 50 7e\n\
2403 323 0: b0 50 00\n\
2404 324 0: b0 50 35\n\
2405 325 0: b0 51 6c\n\
2406 326 0: b0 51 23\n\
2407 327 0: b0 51 00\n\
2408 328 0: b0 51 5a\n\
2409 329 0: b0 52 11\n\
2410 330 0: b0 52 48\n\
2411 331 0: b0 52 00\n\
2412 332 0: b0 52 7f\n\
2413 333 0: b0 53 36\n\
2414 334 0: b0 53 6d\n\
2415 335 0: b0 53 00\n\
2416 336 0: b0 53 24\n\
2417 337 0: b0 54 5b\n\
2418 338 0: b0 54 12\n\
2419 339 0: b0 54 00\n\
2420 340 0: b0 54 49\n\
2421 341 0: b0 55 00\n\
2422 342 0: b0 55 37\n\
2423 343 0: b0 55 00\n\
2424 344 0: b0 55 6e\n\
2425 345 0: b0 56 25\n\
2426 346 0: b0 56 5c\n\
2427 347 0: b0 56 00\n\
2428 348 0: b0 56 13\n\
2429 349 0: b0 57 4a\n\
2430 350 0: b0 57 01\n\
2431 351 0: b0 57 00\n\
2432 352 0: b0 57 38\n\
2433 353 0: b0 58 6f\n\
2434 354 0: b0 58 26\n\
2435 355 0: b0 58 00\n\
2436 356 0: b0 58 5d\n\
2437 357 0: b0 59 14\n\
2438 358 0: b0 59 4b\n\
2439 359 0: b0 59 00\n\
2440 360 0: b0 59 02\n\
2441 361 0: b0 5a 39\n\
2442 362 0: b0 5a 70\n\
2443 363 0: b0 5a 00\n\
2444 364 0: b0 5a 27\n\
2445 365 0: b0 5b 5e\n\
2446 366 0: b0 5b 15\n\
2447 367 0: b0 5b 00\n\
2448 368 0: b0 5b 4c\n\
2449 369 0: b0 5c 03\n\
2450 370 0: b0 5c 3a\n\
2451 371 0: b0 5c 00\n\
2452 372 0: b0 5c 71\n\
2453 373 0: b0 5d 28\n\
2454 374 0: b0 5d 5f\n\
2455 375 0: b0 5d 00\n\
2456 376 0: b0 5d 16\n\
2457 377 0: b0 5e 4d\n\
2458 378 0: b0 5e 04\n\
2459 379 0: b0 5e 00\n\
2460 380 0: b0 5e 3b\n\
2461 381 0: b0 5f 72\n\
2462 382 0: b0 5f 29\n\
2463 383 0: b0 5f 00\n\
2464 384 0: b0 5f 60\n\
2465 393 0: b0 62 61\n\
2466 394 0: b0 62 18\n\
2467 395 0: b0 62 00\n\
2468 396 0: b0 62 4f\n\
2469 397 0: b0 63 06\n\
2470 398 0: b0 63 3d\n\
2471 399 0: b0 63 00\n\
2472 400 0: b0 63 74\n\
2473 401 0: b0 64 2b\n\
2474 402 0: b0 64 62\n\
2475 403 0: b0 64 00\n\
2476 404 0: b0 64 19\n\
2477 405 0: b0 65 50\n\
2478 406 0: b0 65 07\n\
2479 407 0: b0 65 00\n\
2480 408 0: b0 65 3e\n\
2481 409 0: b0 66 75\n\
2482 410 0: b0 66 2c\n\
2483 411 0: b0 66 00\n\
2484 412 0: b0 66 63\n\
2485 413 0: b0 67 1a\n\
2486 414 0: b0 67 51\n\
2487 415 0: b0 67 00\n\
2488 416 0: b0 67 08\n\
2489 417 0: b0 68 3f\n\
2490 418 0: b0 68 76\n\
2491 419 0: b0 68 00\n\
2492 420 0: b0 68 2d\n\
2493 421 0: b0 69 64\n\
2494 422 0: b0 69 1b\n\
2495 423 0: b0 69 00\n\
2496 424 0: b0 69 52\n\
2497 425 0: b0 6a 09\n\
2498 426 0: b0 6a 40\n\
2499 427 0: b0 6a 00\n\
2500 428 0: b0 6a 77\n\
2501 429 0: b0 6b 2e\n\
2502 430 0: b0 6b 65\n\
2503 431 0: b0 6b 00\n\
2504 432 0: b0 6b 1c\n\
2505 433 0: b0 6c 53\n\
2506 434 0: b0 6c 0a\n\
2507 435 0: b0 6c 00\n\
2508 436 0: b0 6c 41\n\
2509 437 0: b0 6d 78\n\
2510 438 0: b0 6d 2f\n\
2511 439 0: b0 6d 00\n\
2512 440 0: b0 6d 66\n\
2513 441 0: b0 6e 1d\n\
2514 442 0: b0 6e 54\n\
2515 443 0: b0 6e 00\n\
2516 444 0: b0 6e 0b\n\
2517 445 0: b0 6f 42\n\
2518 446 0: b0 6f 79\n\
2519 447 0: b0 6f 00\n\
2520 448 0: b0 6f 30\n\
2521 449 0: b0 70 67\n\
2522 450 0: b0 70 1e\n\
2523 451 0: b0 70 00\n\
2524 452 0: b0 70 55\n\
2525 453 0: b0 71 0c\n\
2526 454 0: b0 71 43\n\
2527 455 0: b0 71 00\n\
2528 456 0: b0 71 7a\n\
2529 457 0: b0 72 31\n\
2530 458 0: b0 72 68\n\
2531 459 0: b0 72 00\n\
2532 460 0: b0 72 1f\n\
2533 461 0: b0 73 56\n\
2534 462 0: b0 73 0d\n\
2535 463 0: b0 73 00\n\
2536 464 0: b0 73 44\n\
2537 465 0: b0 74 7b\n\
2538 466 0: b0 74 32\n\
2539 467 0: b0 74 00\n\
2540 468 0: b0 74 69\n\
2541 469 0: b0 75 20\n\
2542 470 0: b0 75 57\n\
2543 471 0: b0 75 00\n\
2544 472 0: b0 75 0e\n\
2545 473 0: b0 76 45\n\
2546 474 0: b0 76 7c\n\
2547 475 0: b0 76 00\n\
2548 476 0: b0 76 33\n\
2549 477 0: b0 77 6a\n\
2550 478 0: b0 77 21\n\
2551 479 0: b0 77 00\n\
2552 480 0: b0 77 58\n\
2553 481 0: b0 40 00\n\
2554 481 0: b0 42 00\n\
2555 481 0: b0 44 00\n\
2556 481 0: b0 45 00\n\
2557 481 0: 80 3c 7f\n\
2558 482 1: b1 40 65\n\
2559 482 1: b1 42 2f\n\
2560 482 1: b1 44 79\n\
2561 482 1: b1 45 1e\n\
2562 482 1: b1 00 25\n\
2563 482 1: b1 20 45\n\
2564 482 1: 91 40 39\n\
2565 482 1: b1 01 4a\n\
2566 482 1: b1 02 6f\n\
2567 482 1: b1 03 14\n\
2568 482 1: b1 04 39\n\
2569 482 1: b1 05 5e\n\
2570 482 1: b1 07 28\n\
2571 482 1: b1 08 4d\n\
2572 482 1: b1 09 72\n\
2573 482 1: b1 0a 17\n\
2574 482 1: b1 0b 3c\n\
2575 482 1: b1 0c 61\n\
2576 482 1: b1 0d 06\n\
2577 482 1: b1 0e 2b\n\
2578 482 1: b1 0f 50\n\
2579 482 1: b1 10 75\n\
2580 482 1: b1 11 1a\n\
2581 482 1: b1 12 3f\n\
2582 482 1: b1 13 64\n\
2583 482 1: b1 14 09\n\
2584 482 1: b1 15 2e\n\
2585 482 1: b1 16 53\n\
2586 482 1: b1 17 78\n\
2587 482 1: b1 18 1d\n\
2588 482 1: b1 19 42\n\
2589 482 1: b1 1a 67\n\
2590 482 1: b1 1b 0c\n\
2591 482 1: b1 1c 31\n\
2592 482 1: b1 1d 56\n\
2593 482 1: b1 1e 7b\n\
2594 482 1: b1 1f 20\n\
2595 482 1: b1 21 6a\n\
2596 482 1: b1 22 0f\n\
2597 482 1: b1 23 34\n\
2598 482 1: b1 24 59\n\
2599 482 1: b1 25 7e\n\
2600 482 1: b1 27 48\n\
2601 482 1: b1 28 6d\n\
2602 482 1: b1 29 12\n\
2603 482 1: b1 2a 37\n\
2604 482 1: b1 2b 5c\n\
2605 482 1: b1 2c 01\n\
2606 482 1: b1 2d 26\n\
2607 482 1: b1 2e 4b\n\
2608 482 1: b1 2f 70\n\
2609 482 1: b1 30 15\n\
2610 482 1: b1 31 3a\n\
2611 482 1: b1 32 5f\n\
2612 482 1: b1 33 04\n\
2613 482 1: b1 34 29\n\
2614 482 1: b1 35 4e\n\
2615 482 1: b1 36 73\n\
2616 482 1: b1 37 18\n\
2617 482 1: b1 38 3d\n\
2618 482 1: b1 39 62\n\
2619 482 1: b1 3a 07\n\
2620 482 1: b1 3b 2c\n\
2621 482 1: b1 3c 51\n\
2622 482 1: b1 3d 76\n\
2623 482 1: b1 3e 1b\n\
2624 482 1: b1 3f 40\n\
2625 482 1: b1 41 0a\n\
2626 482 1: b1 43 54\n\
2627 482 1: b1 46 43\n\
2628 482 1: b1 47 68\n\
2629 482 1: b1 48 0d\n\
2630 482 1: b1 49 32\n\
2631 482 1: b1 4a 57\n\
2632 482 1: b1 4b 7c\n\
2633 482 1: b1 4c 21\n\
2634 482 1: b1 4d 46\n\
2635 482 1: b1 4e 6b\n\
2636 482 1: b1 4f 10\n\
2637 482 1: b1 50 35\n\
2638 482 1: b1 51 5a\n\
2639 482 1: b1 52 7f\n\
2640 482 1: b1 53 24\n\
2641 482 1: b1 54 49\n\
2642 482 1: b1 55 6e\n\
2643 482 1: b1 56 13\n\
2644 482 1: b1 57 38\n\
2645 482 1: b1 58 5d\n\
2646 482 1: b1 59 02\n\
2647 482 1: b1 5a 27\n\
2648 482 1: b1 5b 4c\n\
2649 482 1: b1 5c 71\n\
2650 482 1: b1 5d 16\n\
2651 482 1: b1 5e 3b\n\
2652 482 1: b1 5f 60\n\
2653 482 1: b1 62 4f\n\
2654 482 1: b1 63 74\n\
2655 482 1: b1 64 19\n\
2656 482 1: b1 65 3e\n\
2657 482 1: b1 66 63\n\
2658 482 1: b1 67 08\n\
2659 482 1: b1 68 2d\n\
2660 482 1: b1 69 52\n\
2661 482 1: b1 6a 77\n\
2662 482 1: b1 6b 1c\n\
2663 482 1: b1 6c 41\n\
2664 482 1: b1 6d 66\n\
2665 482 1: b1 6e 0b\n\
2666 482 1: b1 6f 30\n\
2667 482 1: b1 70 55\n\
2668 482 1: b1 71 7a\n\
2669 482 1: b1 72 1f\n\
2670 482 1: b1 73 44\n\
2671 482 1: b1 74 69\n\
2672 482 1: b1 75 0e\n\
2673 482 1: b1 76 33\n\
2674 482 1: b1 77 58\n\
2675 483 1: b1 40 00\n\
2676 483 1: b1 42 00\n\
2677 483 1: b1 44 00\n\
2678 483 1: b1 45 00\n\
2679 483 1: 81 40 39\n\
2680 484 2: b2 40 65\n\
2681 484 2: b2 42 2f\n\
2682 484 2: b2 44 79\n\
2683 484 2: b2 45 1e\n\
2684 484 2: b2 00 25\n\
2685 484 2: b2 20 45\n\
2686 484 2: 92 40 3b\n\
2687 484 2: b2 01 4a\n\
2688 484 2: b2 02 6f\n\
2689 484 2: b2 03 14\n\
2690 484 2: b2 04 39\n\
2691 484 2: b2 05 5e\n\
2692 484 2: b2 07 28\n\
2693 484 2: b2 08 4d\n\
2694 484 2: b2 09 72\n\
2695 484 2: b2 0a 17\n\
2696 484 2: b2 0b 3c\n\
2697 484 2: b2 0c 61\n\
2698 484 2: b2 0d 06\n\
2699 484 2: b2 0e 2b\n\
2700 484 2: b2 0f 50\n\
2701 484 2: b2 10 75\n\
2702 484 2: b2 11 1a\n\
2703 484 2: b2 12 3f\n\
2704 484 2: b2 13 64\n\
2705 484 2: b2 14 09\n\
2706 484 2: b2 15 2e\n\
2707 484 2: b2 16 53\n\
2708 484 2: b2 17 78\n\
2709 484 2: b2 18 1d\n\
2710 484 2: b2 19 42\n\
2711 484 2: b2 1a 67\n\
2712 484 2: b2 1b 0c\n\
2713 484 2: b2 1c 31\n\
2714 484 2: b2 1d 56\n\
2715 484 2: b2 1e 7b\n\
2716 484 2: b2 1f 20\n\
2717 484 2: b2 21 6a\n\
2718 484 2: b2 22 0f\n\
2719 484 2: b2 23 34\n\
2720 484 2: b2 24 59\n\
2721 484 2: b2 25 7e\n\
2722 484 2: b2 27 48\n\
2723 484 2: b2 28 6d\n\
2724 484 2: b2 29 12\n\
2725 484 2: b2 2a 37\n\
2726 484 2: b2 2b 5c\n\
2727 484 2: b2 2c 01\n\
2728 484 2: b2 2d 26\n\
2729 484 2: b2 2e 4b\n\
2730 484 2: b2 2f 70\n\
2731 484 2: b2 30 15\n\
2732 484 2: b2 31 3a\n\
2733 484 2: b2 32 5f\n\
2734 484 2: b2 33 04\n\
2735 484 2: b2 34 29\n\
2736 484 2: b2 35 4e\n\
2737 484 2: b2 36 73\n\
2738 484 2: b2 37 18\n\
2739 484 2: b2 38 3d\n\
2740 484 2: b2 39 62\n\
2741 484 2: b2 3a 07\n\
2742 484 2: b2 3b 2c\n\
2743 484 2: b2 3c 51\n\
2744 484 2: b2 3d 76\n\
2745 484 2: b2 3e 1b\n\
2746 484 2: b2 3f 40\n\
2747 484 2: b2 41 0a\n\
2748 484 2: b2 43 54\n\
2749 484 2: b2 46 43\n\
2750 484 2: b2 47 68\n\
2751 484 2: b2 48 0d\n\
2752 484 2: b2 49 32\n\
2753 484 2: b2 4a 57\n\
2754 484 2: b2 4b 7c\n\
2755 484 2: b2 4c 21\n\
2756 484 2: b2 4d 46\n\
2757 484 2: b2 4e 6b\n\
2758 484 2: b2 4f 10\n\
2759 484 2: b2 50 35\n\
2760 484 2: b2 51 5a\n\
2761 484 2: b2 52 7f\n\
2762 484 2: b2 53 24\n\
2763 484 2: b2 54 49\n\
2764 484 2: b2 55 6e\n\
2765 484 2: b2 56 13\n\
2766 484 2: b2 57 38\n\
2767 484 2: b2 58 5d\n\
2768 484 2: b2 59 02\n\
2769 484 2: b2 5a 27\n\
2770 484 2: b2 5b 4c\n\
2771 484 2: b2 5c 71\n\
2772 484 2: b2 5d 16\n\
2773 484 2: b2 5e 3b\n\
2774 484 2: b2 5f 60\n\
2775 484 2: b2 62 4f\n\
2776 484 2: b2 63 74\n\
2777 484 2: b2 64 19\n\
2778 484 2: b2 65 3e\n\
2779 484 2: b2 66 63\n\
2780 484 2: b2 67 08\n\
2781 484 2: b2 68 2d\n\
2782 484 2: b2 69 52\n\
2783 484 2: b2 6a 77\n\
2784 484 2: b2 6b 1c\n\
2785 484 2: b2 6c 41\n\
2786 484 2: b2 6d 66\n\
2787 484 2: b2 6e 0b\n\
2788 484 2: b2 6f 30\n\
2789 484 2: b2 70 55\n\
2790 484 2: b2 71 7a\n\
2791 484 2: b2 72 1f\n\
2792 484 2: b2 73 44\n\
2793 484 2: b2 74 69\n\
2794 484 2: b2 75 0e\n\
2795 484 2: b2 76 33\n\
2796 484 2: b2 77 58\n\
2797 485 2: b2 40 00\n\
2798 485 2: b2 42 00\n\
2799 485 2: b2 44 00\n\
2800 485 2: b2 45 00\n\
2801 485 2: 82 40 3b\n\
2802 486 3: b3 40 65\n\
2803 486 3: b3 42 2f\n\
2804 486 3: b3 44 79\n\
2805 486 3: b3 45 1e\n\
2806 486 3: b3 00 25\n\
2807 486 3: b3 20 45\n\
2808 486 3: 93 40 3d\n\
2809 486 3: b3 01 4a\n\
2810 486 3: b3 02 6f\n\
2811 486 3: b3 03 14\n\
2812 486 3: b3 04 39\n\
2813 486 3: b3 05 5e\n\
2814 486 3: b3 07 28\n\
2815 486 3: b3 08 4d\n\
2816 486 3: b3 09 72\n\
2817 486 3: b3 0a 17\n\
2818 486 3: b3 0b 3c\n\
2819 486 3: b3 0c 61\n\
2820 486 3: b3 0d 06\n\
2821 486 3: b3 0e 2b\n\
2822 486 3: b3 0f 50\n\
2823 486 3: b3 10 75\n\
2824 486 3: b3 11 1a\n\
2825 486 3: b3 12 3f\n\
2826 486 3: b3 13 64\n\
2827 486 3: b3 14 09\n\
2828 486 3: b3 15 2e\n\
2829 486 3: b3 16 53\n\
2830 486 3: b3 17 78\n\
2831 486 3: b3 18 1d\n\
2832 486 3: b3 19 42\n\
2833 486 3: b3 1a 67\n\
2834 486 3: b3 1b 0c\n\
2835 486 3: b3 1c 31\n\
2836 486 3: b3 1d 56\n\
2837 486 3: b3 1e 7b\n\
2838 486 3: b3 1f 20\n\
2839 486 3: b3 21 6a\n\
2840 486 3: b3 22 0f\n\
2841 486 3: b3 23 34\n\
2842 486 3: b3 24 59\n\
2843 486 3: b3 25 7e\n\
2844 486 3: b3 27 48\n\
2845 486 3: b3 28 6d\n\
2846 486 3: b3 29 12\n\
2847 486 3: b3 2a 37\n\
2848 486 3: b3 2b 5c\n\
2849 486 3: b3 2c 01\n\
2850 486 3: b3 2d 26\n\
2851 486 3: b3 2e 4b\n\
2852 486 3: b3 2f 70\n\
2853 486 3: b3 30 15\n\
2854 486 3: b3 31 3a\n\
2855 486 3: b3 32 5f\n\
2856 486 3: b3 33 04\n\
2857 486 3: b3 34 29\n\
2858 486 3: b3 35 4e\n\
2859 486 3: b3 36 73\n\
2860 486 3: b3 37 18\n\
2861 486 3: b3 38 3d\n\
2862 486 3: b3 39 62\n\
2863 486 3: b3 3a 07\n\
2864 486 3: b3 3b 2c\n\
2865 486 3: b3 3c 51\n\
2866 486 3: b3 3d 76\n\
2867 486 3: b3 3e 1b\n\
2868 486 3: b3 3f 40\n\
2869 486 3: b3 41 0a\n\
2870 486 3: b3 43 54\n\
2871 486 3: b3 46 43\n\
2872 486 3: b3 47 68\n\
2873 486 3: b3 48 0d\n\
2874 486 3: b3 49 32\n\
2875 486 3: b3 4a 57\n\
2876 486 3: b3 4b 7c\n\
2877 486 3: b3 4c 21\n\
2878 486 3: b3 4d 46\n\
2879 486 3: b3 4e 6b\n\
2880 486 3: b3 4f 10\n\
2881 486 3: b3 50 35\n\
2882 486 3: b3 51 5a\n\
2883 486 3: b3 52 7f\n\
2884 486 3: b3 53 24\n\
2885 486 3: b3 54 49\n\
2886 486 3: b3 55 6e\n\
2887 486 3: b3 56 13\n\
2888 486 3: b3 57 38\n\
2889 486 3: b3 58 5d\n\
2890 486 3: b3 59 02\n\
2891 486 3: b3 5a 27\n\
2892 486 3: b3 5b 4c\n\
2893 486 3: b3 5c 71\n\
2894 486 3: b3 5d 16\n\
2895 486 3: b3 5e 3b\n\
2896 486 3: b3 5f 60\n\
2897 486 3: b3 62 4f\n\
2898 486 3: b3 63 74\n\
2899 486 3: b3 64 19\n\
2900 486 3: b3 65 3e\n\
2901 486 3: b3 66 63\n\
2902 486 3: b3 67 08\n\
2903 486 3: b3 68 2d\n\
2904 486 3: b3 69 52\n\
2905 486 3: b3 6a 77\n\
2906 486 3: b3 6b 1c\n\
2907 486 3: b3 6c 41\n\
2908 486 3: b3 6d 66\n\
2909 486 3: b3 6e 0b\n\
2910 486 3: b3 6f 30\n\
2911 486 3: b3 70 55\n\
2912 486 3: b3 71 7a\n\
2913 486 3: b3 72 1f\n\
2914 486 3: b3 73 44\n\
2915 486 3: b3 74 69\n\
2916 486 3: b3 75 0e\n\
2917 486 3: b3 76 33\n\
2918 486 3: b3 77 58\n\
2919 487 3: b3 40 00\n\
2920 487 3: b3 42 00\n\
2921 487 3: b3 44 00\n\
2922 487 3: b3 45 00\n\
2923 487 3: 83 40 3d\n\
2924 488 4: b4 40 65\n\
2925 488 4: b4 42 2f\n\
2926 488 4: b4 44 79\n\
2927 488 4: b4 45 1e\n\
2928 488 4: b4 00 25\n\
2929 488 4: b4 20 45\n\
2930 488 4: 94 40 3f\n\
2931 488 4: b4 01 4a\n\
2932 488 4: b4 02 6f\n\
2933 488 4: b4 03 14\n\
2934 488 4: b4 04 39\n\
2935 488 4: b4 05 5e\n\
2936 488 4: b4 07 28\n\
2937 488 4: b4 08 4d\n\
2938 488 4: b4 09 72\n\
2939 488 4: b4 0a 17\n\
2940 488 4: b4 0b 3c\n\
2941 488 4: b4 0c 61\n\
2942 488 4: b4 0d 06\n\
2943 488 4: b4 0e 2b\n\
2944 488 4: b4 0f 50\n\
2945 488 4: b4 10 75\n\
2946 488 4: b4 11 1a\n\
2947 488 4: b4 12 3f\n\
2948 488 4: b4 13 64\n\
2949 488 4: b4 14 09\n\
2950 488 4: b4 15 2e\n\
2951 488 4: b4 16 53\n\
2952 488 4: b4 17 78\n\
2953 488 4: b4 18 1d\n\
2954 488 4: b4 19 42\n\
2955 488 4: b4 1a 67\n\
2956 488 4: b4 1b 0c\n\
2957 488 4: b4 1c 31\n\
2958 488 4: b4 1d 56\n\
2959 488 4: b4 1e 7b\n\
2960 488 4: b4 1f 20\n\
2961 488 4: b4 21 6a\n\
2962 488 4: b4 22 0f\n\
2963 488 4: b4 23 34\n\
2964 488 4: b4 24 59\n\
2965 488 4: b4 25 7e\n\
2966 488 4: b4 27 48\n\
2967 488 4: b4 28 6d\n\
2968 488 4: b4 29 12\n\
2969 488 4: b4 2a 37\n\
2970 488 4: b4 2b 5c\n\
2971 488 4: b4 2c 01\n\
2972 488 4: b4 2d 26\n\
2973 488 4: b4 2e 4b\n\
2974 488 4: b4 2f 70\n\
2975 488 4: b4 30 15\n\
2976 488 4: b4 31 3a\n\
2977 488 4: b4 32 5f\n\
2978 488 4: b4 33 04\n\
2979 488 4: b4 34 29\n\
2980 488 4: b4 35 4e\n\
2981 488 4: b4 36 73\n\
2982 488 4: b4 37 18\n\
2983 488 4: b4 38 3d\n\
2984 488 4: b4 39 62\n\
2985 488 4: b4 3a 07\n\
2986 488 4: b4 3b 2c\n\
2987 488 4: b4 3c 51\n\
2988 488 4: b4 3d 76\n\
2989 488 4: b4 3e 1b\n\
2990 488 4: b4 3f 40\n\
2991 488 4: b4 41 0a\n\
2992 488 4: b4 43 54\n\
2993 488 4: b4 46 43\n\
2994 488 4: b4 47 68\n\
2995 488 4: b4 48 0d\n\
2996 488 4: b4 49 32\n\
2997 488 4: b4 4a 57\n\
2998 488 4: b4 4b 7c\n\
2999 488 4: b4 4c 21\n\
3000 488 4: b4 4d 46\n\
3001 488 4: b4 4e 6b\n\
3002 488 4: b4 4f 10\n\
3003 488 4: b4 50 35\n\
3004 488 4: b4 51 5a\n\
3005 488 4: b4 52 7f\n\
3006 488 4: b4 53 24\n\
3007 488 4: b4 54 49\n\
3008 488 4: b4 55 6e\n\
3009 488 4: b4 56 13\n\
3010 488 4: b4 57 38\n\
3011 488 4: b4 58 5d\n\
3012 488 4: b4 59 02\n\
3013 488 4: b4 5a 27\n\
3014 488 4: b4 5b 4c\n\
3015 488 4: b4 5c 71\n\
3016 488 4: b4 5d 16\n\
3017 488 4: b4 5e 3b\n\
3018 488 4: b4 5f 60\n\
3019 488 4: b4 62 4f\n\
3020 488 4: b4 63 74\n\
3021 488 4: b4 64 19\n\
3022 488 4: b4 65 3e\n\
3023 488 4: b4 66 63\n\
3024 488 4: b4 67 08\n\
3025 488 4: b4 68 2d\n\
3026 488 4: b4 69 52\n\
3027 488 4: b4 6a 77\n\
3028 488 4: b4 6b 1c\n\
3029 488 4: b4 6c 41\n\
3030 488 4: b4 6d 66\n\
3031 488 4: b4 6e 0b\n\
3032 488 4: b4 6f 30\n\
3033 488 4: b4 70 55\n\
3034 488 4: b4 71 7a\n\
3035 488 4: b4 72 1f\n\
3036 488 4: b4 73 44\n\
3037 488 4: b4 74 69\n\
3038 488 4: b4 75 0e\n\
3039 488 4: b4 76 33\n\
3040 488 4: b4 77 58\n\
3041 489 4: b4 40 00\n\
3042 489 4: b4 42 00\n\
3043 489 4: b4 44 00\n\
3044 489 4: b4 45 00\n\
3045 489 4: 84 40 3f\n\
3046 490 5: b5 40 00\n\
3047 490 5: b5 42 00\n\
3048 490 5: b5 44 00\n\
3049 490 5: b5 45 00\n\
3050 490 5: b5 00 25\n\
3051 490 5: b5 20 45\n\
3052 490 5: 95 40 3f\n\
3053 490 5: b5 07 28\n\
3054 490 5: b5 0a 17\n\
3055 490 5: b5 46 43\n\
3056 490 5: b5 47 68\n\
3057 490 5: b5 48 0d\n\
3058 490 5: b5 49 32\n\
3059 490 5: b5 4a 57\n\
3060 490 5: b5 4b 7c\n\
3061 490 5: b5 4c 21\n\
3062 490 5: b5 4d 46\n\
3063 490 5: b5 4e 6b\n\
3064 490 5: b5 4f 10\n\
3065 490 5: b5 5b 4c\n\
3066 490 5: b5 5c 71\n\
3067 490 5: b5 5d 16\n\
3068 490 5: b5 5e 3b\n\
3069 490 5: b5 5f 60\n\
3070 490 5: b5 01 00\n\
3071 490 5: b5 02 00\n\
3072 490 5: b5 03 00\n\
3073 490 5: b5 04 00\n\
3074 490 5: b5 05 00\n\
3075 490 5: b5 08 40\n\
3076 490 5: b5 09 00\n\
3077 490 5: b5 0b 7f\n\
3078 490 5: b5 0c 00\n\
3079 490 5: b5 0d 00\n\
3080 490 5: b5 0e 00\n\
3081 490 5: b5 0f 00\n\
3082 490 5: b5 10 00\n\
3083 490 5: b5 11 00\n\
3084 490 5: b5 12 00\n\
3085 490 5: b5 13 00\n\
3086 490 5: b5 14 00\n\
3087 490 5: b5 15 00\n\
3088 490 5: b5 16 00\n\
3089 490 5: b5 17 00\n\
3090 490 5: b5 18 00\n\
3091 490 5: b5 19 00\n\
3092 490 5: b5 1a 00\n\
3093 490 5: b5 1b 00\n\
3094 490 5: b5 1c 00\n\
3095 490 5: b5 1d 00\n\
3096 490 5: b5 1e 00\n\
3097 490 5: b5 1f 00\n\
3098 490 5: b5 21 00\n\
3099 490 5: b5 22 00\n\
3100 490 5: b5 23 00\n\
3101 490 5: b5 24 00\n\
3102 490 5: b5 25 00\n\
3103 490 5: b5 27 00\n\
3104 490 5: b5 28 00\n\
3105 490 5: b5 29 00\n\
3106 490 5: b5 2a 00\n\
3107 490 5: b5 2b 7f\n\
3108 490 5: b5 2c 00\n\
3109 490 5: b5 2d 00\n\
3110 490 5: b5 2e 00\n\
3111 490 5: b5 2f 00\n\
3112 490 5: b5 30 00\n\
3113 490 5: b5 31 00\n\
3114 490 5: b5 32 00\n\
3115 490 5: b5 33 00\n\
3116 490 5: b5 34 00\n\
3117 490 5: b5 35 00\n\
3118 490 5: b5 36 00\n\
3119 490 5: b5 37 00\n\
3120 490 5: b5 38 00\n\
3121 490 5: b5 39 00\n\
3122 490 5: b5 3a 00\n\
3123 490 5: b5 3b 00\n\
3124 490 5: b5 3c 00\n\
3125 490 5: b5 3d 00\n\
3126 490 5: b5 3e 00\n\
3127 490 5: b5 3f 00\n\
3128 490 5: b5 41 00\n\
3129 490 5: b5 43 00\n\
3130 490 5: b5 50 00\n\
3131 490 5: b5 51 00\n\
3132 490 5: b5 52 00\n\
3133 490 5: b5 53 00\n\
3134 490 5: b5 54 00\n\
3135 490 5: b5 55 00\n\
3136 490 5: b5 56 00\n\
3137 490 5: b5 57 00\n\
3138 490 5: b5 58 00\n\
3139 490 5: b5 59 00\n\
3140 490 5: b5 5a 00\n\
3141 490 5: b5 62 7f\n\
3142 490 5: b5 63 7f\n\
3143 490 5: b5 64 7f\n\
3144 490 5: b5 65 7f\n\
3145 490 5: b5 66 00\n\
3146 490 5: b5 67 00\n\
3147 490 5: b5 68 00\n\
3148 490 5: b5 69 00\n\
3149 490 5: b5 6a 00\n\
3150 490 5: b5 6b 00\n\
3151 490 5: b5 6c 00\n\
3152 490 5: b5 6d 00\n\
3153 490 5: b5 6e 00\n\
3154 490 5: b5 6f 00\n\
3155 490 5: b5 70 00\n\
3156 490 5: b5 71 00\n\
3157 490 5: b5 72 00\n\
3158 490 5: b5 73 00\n\
3159 490 5: b5 74 00\n\
3160 490 5: b5 75 00\n\
3161 490 5: b5 76 00\n\
3162 490 5: b5 77 00\n\
3163 491 5: 85 40 3f\n\
3164 492 6: b6 40 00\n\
3165 492 6: b6 42 00\n\
3166 492 6: b6 44 00\n\
3167 492 6: b6 45 00\n\
3168 492 6: b6 00 25\n\
3169 492 6: b6 20 45\n\
3170 492 6: 96 40 3f\n\
3171 492 6: b6 07 28\n\
3172 492 6: b6 0a 17\n\
3173 492 6: b6 46 43\n\
3174 492 6: b6 47 68\n\
3175 492 6: b6 48 0d\n\
3176 492 6: b6 49 32\n\
3177 492 6: b6 4a 57\n\
3178 492 6: b6 4b 7c\n\
3179 492 6: b6 4c 21\n\
3180 492 6: b6 4d 46\n\
3181 492 6: b6 4e 6b\n\
3182 492 6: b6 4f 10\n\
3183 492 6: b6 5b 4c\n\
3184 492 6: b6 5c 71\n\
3185 492 6: b6 5d 16\n\
3186 492 6: b6 5e 3b\n\
3187 492 6: b6 5f 60\n\
3188 492 6: b6 01 00\n\
3189 492 6: b6 02 00\n\
3190 492 6: b6 03 00\n\
3191 492 6: b6 04 00\n\
3192 492 6: b6 05 00\n\
3193 492 6: b6 08 40\n\
3194 492 6: b6 09 00\n\
3195 492 6: b6 0b 7f\n\
3196 492 6: b6 0c 00\n\
3197 492 6: b6 0d 00\n\
3198 492 6: b6 0e 00\n\
3199 492 6: b6 0f 00\n\
3200 492 6: b6 10 00\n\
3201 492 6: b6 11 00\n\
3202 492 6: b6 12 00\n\
3203 492 6: b6 13 00\n\
3204 492 6: b6 14 00\n\
3205 492 6: b6 15 00\n\
3206 492 6: b6 16 00\n\
3207 492 6: b6 17 00\n\
3208 492 6: b6 18 00\n\
3209 492 6: b6 19 00\n\
3210 492 6: b6 1a 00\n\
3211 492 6: b6 1b 00\n\
3212 492 6: b6 1c 00\n\
3213 492 6: b6 1d 00\n\
3214 492 6: b6 1e 00\n\
3215 492 6: b6 1f 00\n\
3216 492 6: b6 21 00\n\
3217 492 6: b6 22 00\n\
3218 492 6: b6 23 00\n\
3219 492 6: b6 24 00\n\
3220 492 6: b6 25 00\n\
3221 492 6: b6 27 00\n\
3222 492 6: b6 28 00\n\
3223 492 6: b6 29 00\n\
3224 492 6: b6 2a 00\n\
3225 492 6: b6 2b 7f\n\
3226 492 6: b6 2c 00\n\
3227 492 6: b6 2d 00\n\
3228 492 6: b6 2e 00\n\
3229 492 6: b6 2f 00\n\
3230 492 6: b6 30 00\n\
3231 492 6: b6 31 00\n\
3232 492 6: b6 32 00\n\
3233 492 6: b6 33 00\n\
3234 492 6: b6 34 00\n\
3235 492 6: b6 35 00\n\
3236 492 6: b6 36 00\n\
3237 492 6: b6 37 00\n\
3238 492 6: b6 38 00\n\
3239 492 6: b6 39 00\n\
3240 492 6: b6 3a 00\n\
3241 492 6: b6 3b 00\n\
3242 492 6: b6 3c 00\n\
3243 492 6: b6 3d 00\n\
3244 492 6: b6 3e 00\n\
3245 492 6: b6 3f 00\n\
3246 492 6: b6 41 00\n\
3247 492 6: b6 43 00\n\
3248 492 6: b6 50 00\n\
3249 492 6: b6 51 00\n\
3250 492 6: b6 52 00\n\
3251 492 6: b6 53 00\n\
3252 492 6: b6 54 00\n\
3253 492 6: b6 55 00\n\
3254 492 6: b6 56 00\n\
3255 492 6: b6 57 00\n\
3256 492 6: b6 58 00\n\
3257 492 6: b6 59 00\n\
3258 492 6: b6 5a 00\n\
3259 492 6: b6 62 7f\n\
3260 492 6: b6 63 7f\n\
3261 492 6: b6 64 7f\n\
3262 492 6: b6 65 7f\n\
3263 492 6: b6 66 00\n\
3264 492 6: b6 67 00\n\
3265 492 6: b6 68 00\n\
3266 492 6: b6 69 00\n\
3267 492 6: b6 6a 00\n\
3268 492 6: b6 6b 00\n\
3269 492 6: b6 6c 00\n\
3270 492 6: b6 6d 00\n\
3271 492 6: b6 6e 00\n\
3272 492 6: b6 6f 00\n\
3273 492 6: b6 70 00\n\
3274 492 6: b6 71 00\n\
3275 492 6: b6 72 00\n\
3276 492 6: b6 73 00\n\
3277 492 6: b6 74 00\n\
3278 492 6: b6 75 00\n\
3279 492 6: b6 76 00\n\
3280 492 6: b6 77 00\n\
3281 493 6: 86 40 3f\n\
3282 494 7: b7 40 00\n\
3283 494 7: b7 42 00\n\
3284 494 7: b7 44 00\n\
3285 494 7: b7 45 00\n\
3286 494 7: b7 00 25\n\
3287 494 7: b7 20 45\n\
3288 494 7: 97 40 3f\n\
3289 494 7: b7 07 28\n\
3290 494 7: b7 0a 17\n\
3291 494 7: b7 46 43\n\
3292 494 7: b7 47 68\n\
3293 494 7: b7 48 0d\n\
3294 494 7: b7 49 32\n\
3295 494 7: b7 4a 57\n\
3296 494 7: b7 4b 7c\n\
3297 494 7: b7 4c 21\n\
3298 494 7: b7 4d 46\n\
3299 494 7: b7 4e 6b\n\
3300 494 7: b7 4f 10\n\
3301 494 7: b7 5b 4c\n\
3302 494 7: b7 5c 71\n\
3303 494 7: b7 5d 16\n\
3304 494 7: b7 5e 3b\n\
3305 494 7: b7 5f 60\n\
3306 494 7: b7 01 00\n\
3307 494 7: b7 02 00\n\
3308 494 7: b7 03 00\n\
3309 494 7: b7 04 00\n\
3310 494 7: b7 05 00\n\
3311 494 7: b7 08 40\n\
3312 494 7: b7 09 00\n\
3313 494 7: b7 0b 7f\n\
3314 494 7: b7 0c 00\n\
3315 494 7: b7 0d 00\n\
3316 494 7: b7 0e 00\n\
3317 494 7: b7 0f 00\n\
3318 494 7: b7 10 00\n\
3319 494 7: b7 11 00\n\
3320 494 7: b7 12 00\n\
3321 494 7: b7 13 00\n\
3322 494 7: b7 14 00\n\
3323 494 7: b7 15 00\n\
3324 494 7: b7 16 00\n\
3325 494 7: b7 17 00\n\
3326 494 7: b7 18 00\n\
3327 494 7: b7 19 00\n\
3328 494 7: b7 1a 00\n\
3329 494 7: b7 1b 00\n\
3330 494 7: b7 1c 00\n\
3331 494 7: b7 1d 00\n\
3332 494 7: b7 1e 00\n\
3333 494 7: b7 1f 00\n\
3334 494 7: b7 21 00\n\
3335 494 7: b7 22 00\n\
3336 494 7: b7 23 00\n\
3337 494 7: b7 24 00\n\
3338 494 7: b7 25 00\n\
3339 494 7: b7 27 00\n\
3340 494 7: b7 28 00\n\
3341 494 7: b7 29 00\n\
3342 494 7: b7 2a 00\n\
3343 494 7: b7 2b 7f\n\
3344 494 7: b7 2c 00\n\
3345 494 7: b7 2d 00\n\
3346 494 7: b7 2e 00\n\
3347 494 7: b7 2f 00\n\
3348 494 7: b7 30 00\n\
3349 494 7: b7 31 00\n\
3350 494 7: b7 32 00\n\
3351 494 7: b7 33 00\n\
3352 494 7: b7 34 00\n\
3353 494 7: b7 35 00\n\
3354 494 7: b7 36 00\n\
3355 494 7: b7 37 00\n\
3356 494 7: b7 38 00\n\
3357 494 7: b7 39 00\n\
3358 494 7: b7 3a 00\n\
3359 494 7: b7 3b 00\n\
3360 494 7: b7 3c 00\n\
3361 494 7: b7 3d 00\n\
3362 494 7: b7 3e 00\n\
3363 494 7: b7 3f 00\n\
3364 494 7: b7 41 00\n\
3365 494 7: b7 43 00\n\
3366 494 7: b7 50 00\n\
3367 494 7: b7 51 00\n\
3368 494 7: b7 52 00\n\
3369 494 7: b7 53 00\n\
3370 494 7: b7 54 00\n\
3371 494 7: b7 55 00\n\
3372 494 7: b7 56 00\n\
3373 494 7: b7 57 00\n\
3374 494 7: b7 58 00\n\
3375 494 7: b7 59 00\n\
3376 494 7: b7 5a 00\n\
3377 494 7: b7 62 7f\n\
3378 494 7: b7 63 7f\n\
3379 494 7: b7 64 7f\n\
3380 494 7: b7 65 7f\n\
3381 494 7: b7 66 00\n\
3382 494 7: b7 67 00\n\
3383 494 7: b7 68 00\n\
3384 494 7: b7 69 00\n\
3385 494 7: b7 6a 00\n\
3386 494 7: b7 6b 00\n\
3387 494 7: b7 6c 00\n\
3388 494 7: b7 6d 00\n\
3389 494 7: b7 6e 00\n\
3390 494 7: b7 6f 00\n\
3391 494 7: b7 70 00\n\
3392 494 7: b7 71 00\n\
3393 494 7: b7 72 00\n\
3394 494 7: b7 73 00\n\
3395 494 7: b7 74 00\n\
3396 494 7: b7 75 00\n\
3397 494 7: b7 76 00\n\
3398 494 7: b7 77 00\n\
3399 495 7: 87 40 3f\n\
3400 496 8: b8 40 00\n\
3401 496 8: b8 42 00\n\
3402 496 8: b8 44 00\n\
3403 496 8: b8 45 00\n\
3404 496 8: b8 00 25\n\
3405 496 8: b8 20 45\n\
3406 496 8: 98 40 3f\n\
3407 496 8: b8 07 28\n\
3408 496 8: b8 0a 17\n\
3409 496 8: b8 46 43\n\
3410 496 8: b8 47 68\n\
3411 496 8: b8 48 0d\n\
3412 496 8: b8 49 32\n\
3413 496 8: b8 4a 57\n\
3414 496 8: b8 4b 7c\n\
3415 496 8: b8 4c 21\n\
3416 496 8: b8 4d 46\n\
3417 496 8: b8 4e 6b\n\
3418 496 8: b8 4f 10\n\
3419 496 8: b8 5b 4c\n\
3420 496 8: b8 5c 71\n\
3421 496 8: b8 5d 16\n\
3422 496 8: b8 5e 3b\n\
3423 496 8: b8 5f 60\n\
3424 496 8: b8 01 00\n\
3425 496 8: b8 02 00\n\
3426 496 8: b8 03 00\n\
3427 496 8: b8 04 00\n\
3428 496 8: b8 05 00\n\
3429 496 8: b8 08 40\n\
3430 496 8: b8 09 00\n\
3431 496 8: b8 0b 7f\n\
3432 496 8: b8 0c 00\n\
3433 496 8: b8 0d 00\n\
3434 496 8: b8 0e 00\n\
3435 496 8: b8 0f 00\n\
3436 496 8: b8 10 00\n\
3437 496 8: b8 11 00\n\
3438 496 8: b8 12 00\n\
3439 496 8: b8 13 00\n\
3440 496 8: b8 14 00\n\
3441 496 8: b8 15 00\n\
3442 496 8: b8 16 00\n\
3443 496 8: b8 17 00\n\
3444 496 8: b8 18 00\n\
3445 496 8: b8 19 00\n\
3446 496 8: b8 1a 00\n\
3447 496 8: b8 1b 00\n\
3448 496 8: b8 1c 00\n\
3449 496 8: b8 1d 00\n\
3450 496 8: b8 1e 00\n\
3451 496 8: b8 1f 00\n\
3452 496 8: b8 21 00\n\
3453 496 8: b8 22 00\n\
3454 496 8: b8 23 00\n\
3455 496 8: b8 24 00\n\
3456 496 8: b8 25 00\n\
3457 496 8: b8 27 00\n\
3458 496 8: b8 28 00\n\
3459 496 8: b8 29 00\n\
3460 496 8: b8 2a 00\n\
3461 496 8: b8 2b 7f\n\
3462 496 8: b8 2c 00\n\
3463 496 8: b8 2d 00\n\
3464 496 8: b8 2e 00\n\
3465 496 8: b8 2f 00\n\
3466 496 8: b8 30 00\n\
3467 496 8: b8 31 00\n\
3468 496 8: b8 32 00\n\
3469 496 8: b8 33 00\n\
3470 496 8: b8 34 00\n\
3471 496 8: b8 35 00\n\
3472 496 8: b8 36 00\n\
3473 496 8: b8 37 00\n\
3474 496 8: b8 38 00\n\
3475 496 8: b8 39 00\n\
3476 496 8: b8 3a 00\n\
3477 496 8: b8 3b 00\n\
3478 496 8: b8 3c 00\n\
3479 496 8: b8 3d 00\n\
3480 496 8: b8 3e 00\n\
3481 496 8: b8 3f 00\n\
3482 496 8: b8 41 00\n\
3483 496 8: b8 43 00\n\
3484 496 8: b8 50 00\n\
3485 496 8: b8 51 00\n\
3486 496 8: b8 52 00\n\
3487 496 8: b8 53 00\n\
3488 496 8: b8 54 00\n\
3489 496 8: b8 55 00\n\
3490 496 8: b8 56 00\n\
3491 496 8: b8 57 00\n\
3492 496 8: b8 58 00\n\
3493 496 8: b8 59 00\n\
3494 496 8: b8 5a 00\n\
3495 496 8: b8 62 7f\n\
3496 496 8: b8 63 7f\n\
3497 496 8: b8 64 7f\n\
3498 496 8: b8 65 7f\n\
3499 496 8: b8 66 00\n\
3500 496 8: b8 67 00\n\
3501 496 8: b8 68 00\n\
3502 496 8: b8 69 00\n\
3503 496 8: b8 6a 00\n\
3504 496 8: b8 6b 00\n\
3505 496 8: b8 6c 00\n\
3506 496 8: b8 6d 00\n\
3507 496 8: b8 6e 00\n\
3508 496 8: b8 6f 00\n\
3509 496 8: b8 70 00\n\
3510 496 8: b8 71 00\n\
3511 496 8: b8 72 00\n\
3512 496 8: b8 73 00\n\
3513 496 8: b8 74 00\n\
3514 496 8: b8 75 00\n\
3515 496 8: b8 76 00\n\
3516 496 8: b8 77 00\n\
3517 497 8: 88 40 3f\n\
3518 498 10: ba 40 00\n\
3519 498 10: ba 42 00\n\
3520 498 10: ba 44 00\n\
3521 498 10: ba 45 00\n\
3522 498 10: ba 00 25\n\
3523 498 10: ba 20 45\n\
3524 498 10: 9a 40 3f\n\
3525 498 10: ba 07 28\n\
3526 498 10: ba 0a 17\n\
3527 498 10: ba 46 43\n\
3528 498 10: ba 47 68\n\
3529 498 10: ba 48 0d\n\
3530 498 10: ba 49 32\n\
3531 498 10: ba 4a 57\n\
3532 498 10: ba 4b 7c\n\
3533 498 10: ba 4c 21\n\
3534 498 10: ba 4d 46\n\
3535 498 10: ba 4e 6b\n\
3536 498 10: ba 4f 10\n\
3537 498 10: ba 5b 4c\n\
3538 498 10: ba 5c 71\n\
3539 498 10: ba 5d 16\n\
3540 498 10: ba 5e 3b\n\
3541 498 10: ba 5f 60\n\
3542 498 10: ba 01 00\n\
3543 498 10: ba 02 00\n\
3544 498 10: ba 03 00\n\
3545 498 10: ba 04 00\n\
3546 498 10: ba 05 00\n\
3547 498 10: ba 08 40\n\
3548 498 10: ba 09 00\n\
3549 498 10: ba 0b 7f\n\
3550 498 10: ba 0c 00\n\
3551 498 10: ba 0d 00\n\
3552 498 10: ba 0e 00\n\
3553 498 10: ba 0f 00\n\
3554 498 10: ba 10 00\n\
3555 498 10: ba 11 00\n\
3556 498 10: ba 12 00\n\
3557 498 10: ba 13 00\n\
3558 498 10: ba 14 00\n\
3559 498 10: ba 15 00\n\
3560 498 10: ba 16 00\n\
3561 498 10: ba 17 00\n\
3562 498 10: ba 18 00\n\
3563 498 10: ba 19 00\n\
3564 498 10: ba 1a 00\n\
3565 498 10: ba 1b 00\n\
3566 498 10: ba 1c 00\n\
3567 498 10: ba 1d 00\n\
3568 498 10: ba 1e 00\n\
3569 498 10: ba 1f 00\n\
3570 498 10: ba 21 00\n\
3571 498 10: ba 22 00\n\
3572 498 10: ba 23 00\n\
3573 498 10: ba 24 00\n\
3574 498 10: ba 25 00\n\
3575 498 10: ba 27 00\n\
3576 498 10: ba 28 00\n\
3577 498 10: ba 29 00\n\
3578 498 10: ba 2a 00\n\
3579 498 10: ba 2b 7f\n\
3580 498 10: ba 2c 00\n\
3581 498 10: ba 2d 00\n\
3582 498 10: ba 2e 00\n\
3583 498 10: ba 2f 00\n\
3584 498 10: ba 30 00\n\
3585 498 10: ba 31 00\n\
3586 498 10: ba 32 00\n\
3587 498 10: ba 33 00\n\
3588 498 10: ba 34 00\n\
3589 498 10: ba 35 00\n\
3590 498 10: ba 36 00\n\
3591 498 10: ba 37 00\n\
3592 498 10: ba 38 00\n\
3593 498 10: ba 39 00\n\
3594 498 10: ba 3a 00\n\
3595 498 10: ba 3b 00\n\
3596 498 10: ba 3c 00\n\
3597 498 10: ba 3d 00\n\
3598 498 10: ba 3e 00\n\
3599 498 10: ba 3f 00\n\
3600 498 10: ba 41 00\n\
3601 498 10: ba 43 00\n\
3602 498 10: ba 50 00\n\
3603 498 10: ba 51 00\n\
3604 498 10: ba 52 00\n\
3605 498 10: ba 53 00\n\
3606 498 10: ba 54 00\n\
3607 498 10: ba 55 00\n\
3608 498 10: ba 56 00\n\
3609 498 10: ba 57 00\n\
3610 498 10: ba 58 00\n\
3611 498 10: ba 59 00\n\
3612 498 10: ba 5a 00\n\
3613 498 10: ba 62 7f\n\
3614 498 10: ba 63 7f\n\
3615 498 10: ba 64 7f\n\
3616 498 10: ba 65 7f\n\
3617 498 10: ba 66 00\n\
3618 498 10: ba 67 00\n\
3619 498 10: ba 68 00\n\
3620 498 10: ba 69 00\n\
3621 498 10: ba 6a 00\n\
3622 498 10: ba 6b 00\n\
3623 498 10: ba 6c 00\n\
3624 498 10: ba 6d 00\n\
3625 498 10: ba 6e 00\n\
3626 498 10: ba 6f 00\n\
3627 498 10: ba 70 00\n\
3628 498 10: ba 71 00\n\
3629 498 10: ba 72 00\n\
3630 498 10: ba 73 00\n\
3631 498 10: ba 74 00\n\
3632 498 10: ba 75 00\n\
3633 498 10: ba 76 00\n\
3634 498 10: ba 77 00\n\
3635 499 10: 8a 40 3f\n\
3636 500 11: bb 40 00\n\
3637 500 11: bb 42 00\n\
3638 500 11: bb 44 00\n\
3639 500 11: bb 45 00\n\
3640 500 11: bb 00 25\n\
3641 500 11: bb 20 45\n\
3642 500 11: 9b 40 3f\n\
3643 500 11: bb 07 28\n\
3644 500 11: bb 0a 17\n\
3645 500 11: bb 46 43\n\
3646 500 11: bb 47 68\n\
3647 500 11: bb 48 0d\n\
3648 500 11: bb 49 32\n\
3649 500 11: bb 4a 57\n\
3650 500 11: bb 4b 7c\n\
3651 500 11: bb 4c 21\n\
3652 500 11: bb 4d 46\n\
3653 500 11: bb 4e 6b\n\
3654 500 11: bb 4f 10\n\
3655 500 11: bb 5b 4c\n\
3656 500 11: bb 5c 71\n\
3657 500 11: bb 5d 16\n\
3658 500 11: bb 5e 3b\n\
3659 500 11: bb 5f 60\n\
3660 500 11: bb 01 00\n\
3661 500 11: bb 02 00\n\
3662 500 11: bb 03 00\n\
3663 500 11: bb 04 00\n\
3664 500 11: bb 05 00\n\
3665 500 11: bb 08 40\n\
3666 500 11: bb 09 00\n\
3667 500 11: bb 0b 7f\n\
3668 500 11: bb 0c 00\n\
3669 500 11: bb 0d 00\n\
3670 500 11: bb 0e 00\n\
3671 500 11: bb 0f 00\n\
3672 500 11: bb 10 00\n\
3673 500 11: bb 11 00\n\
3674 500 11: bb 12 00\n\
3675 500 11: bb 13 00\n\
3676 500 11: bb 14 00\n\
3677 500 11: bb 15 00\n\
3678 500 11: bb 16 00\n\
3679 500 11: bb 17 00\n\
3680 500 11: bb 18 00\n\
3681 500 11: bb 19 00\n\
3682 500 11: bb 1a 00\n\
3683 500 11: bb 1b 00\n\
3684 500 11: bb 1c 00\n\
3685 500 11: bb 1d 00\n\
3686 500 11: bb 1e 00\n\
3687 500 11: bb 1f 00\n\
3688 500 11: bb 21 00\n\
3689 500 11: bb 22 00\n\
3690 500 11: bb 23 00\n\
3691 500 11: bb 24 00\n\
3692 500 11: bb 25 00\n\
3693 500 11: bb 27 00\n\
3694 500 11: bb 28 00\n\
3695 500 11: bb 29 00\n\
3696 500 11: bb 2a 00\n\
3697 500 11: bb 2b 7f\n\
3698 500 11: bb 2c 00\n\
3699 500 11: bb 2d 00\n\
3700 500 11: bb 2e 00\n\
3701 500 11: bb 2f 00\n\
3702 500 11: bb 30 00\n\
3703 500 11: bb 31 00\n\
3704 500 11: bb 32 00\n\
3705 500 11: bb 33 00\n\
3706 500 11: bb 34 00\n\
3707 500 11: bb 35 00\n\
3708 500 11: bb 36 00\n\
3709 500 11: bb 37 00\n\
3710 500 11: bb 38 00\n\
3711 500 11: bb 39 00\n\
3712 500 11: bb 3a 00\n\
3713 500 11: bb 3b 00\n\
3714 500 11: bb 3c 00\n\
3715 500 11: bb 3d 00\n\
3716 500 11: bb 3e 00\n\
3717 500 11: bb 3f 00\n\
3718 500 11: bb 41 00\n\
3719 500 11: bb 43 00\n\
3720 500 11: bb 50 00\n\
3721 500 11: bb 51 00\n\
3722 500 11: bb 52 00\n\
3723 500 11: bb 53 00\n\
3724 500 11: bb 54 00\n\
3725 500 11: bb 55 00\n\
3726 500 11: bb 56 00\n\
3727 500 11: bb 57 00\n\
3728 500 11: bb 58 00\n\
3729 500 11: bb 59 00\n\
3730 500 11: bb 5a 00\n\
3731 500 11: bb 62 7f\n\
3732 500 11: bb 63 7f\n\
3733 500 11: bb 64 7f\n\
3734 500 11: bb 65 7f\n\
3735 500 11: bb 66 00\n\
3736 500 11: bb 67 00\n\
3737 500 11: bb 68 00\n\
3738 500 11: bb 69 00\n\
3739 500 11: bb 6a 00\n\
3740 500 11: bb 6b 00\n\
3741 500 11: bb 6c 00\n\
3742 500 11: bb 6d 00\n\
3743 500 11: bb 6e 00\n\
3744 500 11: bb 6f 00\n\
3745 500 11: bb 70 00\n\
3746 500 11: bb 71 00\n\
3747 500 11: bb 72 00\n\
3748 500 11: bb 73 00\n\
3749 500 11: bb 74 00\n\
3750 500 11: bb 75 00\n\
3751 500 11: bb 76 00\n\
3752 500 11: bb 77 00\n\
3753 501 11: 8b 40 3f\n\
3754 502 12: bc 40 00\n\
3755 502 12: bc 42 00\n\
3756 502 12: bc 44 00\n\
3757 502 12: bc 45 00\n\
3758 502 12: bc 00 25\n\
3759 502 12: bc 20 45\n\
3760 502 12: 9c 40 3f\n\
3761 502 12: bc 07 28\n\
3762 502 12: bc 0a 17\n\
3763 502 12: bc 46 43\n\
3764 502 12: bc 47 68\n\
3765 502 12: bc 48 0d\n\
3766 502 12: bc 49 32\n\
3767 502 12: bc 4a 57\n\
3768 502 12: bc 4b 7c\n\
3769 502 12: bc 4c 21\n\
3770 502 12: bc 4d 46\n\
3771 502 12: bc 4e 6b\n\
3772 502 12: bc 4f 10\n\
3773 502 12: bc 5b 4c\n\
3774 502 12: bc 5c 71\n\
3775 502 12: bc 5d 16\n\
3776 502 12: bc 5e 3b\n\
3777 502 12: bc 5f 60\n\
3778 502 12: bc 01 00\n\
3779 502 12: bc 02 00\n\
3780 502 12: bc 03 00\n\
3781 502 12: bc 04 00\n\
3782 502 12: bc 05 00\n\
3783 502 12: bc 08 40\n\
3784 502 12: bc 09 00\n\
3785 502 12: bc 0b 7f\n\
3786 502 12: bc 0c 00\n\
3787 502 12: bc 0d 00\n\
3788 502 12: bc 0e 00\n\
3789 502 12: bc 0f 00\n\
3790 502 12: bc 10 00\n\
3791 502 12: bc 11 00\n\
3792 502 12: bc 12 00\n\
3793 502 12: bc 13 00\n\
3794 502 12: bc 14 00\n\
3795 502 12: bc 15 00\n\
3796 502 12: bc 16 00\n\
3797 502 12: bc 17 00\n\
3798 502 12: bc 18 00\n\
3799 502 12: bc 19 00\n\
3800 502 12: bc 1a 00\n\
3801 502 12: bc 1b 00\n\
3802 502 12: bc 1c 00\n\
3803 502 12: bc 1d 00\n\
3804 502 12: bc 1e 00\n\
3805 502 12: bc 1f 00\n\
3806 502 12: bc 21 00\n\
3807 502 12: bc 22 00\n\
3808 502 12: bc 23 00\n\
3809 502 12: bc 24 00\n\
3810 502 12: bc 25 00\n\
3811 502 12: bc 27 00\n\
3812 502 12: bc 28 00\n\
3813 502 12: bc 29 00\n\
3814 502 12: bc 2a 00\n\
3815 502 12: bc 2b 7f\n\
3816 502 12: bc 2c 00\n\
3817 502 12: bc 2d 00\n\
3818 502 12: bc 2e 00\n\
3819 502 12: bc 2f 00\n\
3820 502 12: bc 30 00\n\
3821 502 12: bc 31 00\n\
3822 502 12: bc 32 00\n\
3823 502 12: bc 33 00\n\
3824 502 12: bc 34 00\n\
3825 502 12: bc 35 00\n\
3826 502 12: bc 36 00\n\
3827 502 12: bc 37 00\n\
3828 502 12: bc 38 00\n\
3829 502 12: bc 39 00\n\
3830 502 12: bc 3a 00\n\
3831 502 12: bc 3b 00\n\
3832 502 12: bc 3c 00\n\
3833 502 12: bc 3d 00\n\
3834 502 12: bc 3e 00\n\
3835 502 12: bc 3f 00\n\
3836 502 12: bc 41 00\n\
3837 502 12: bc 43 00\n\
3838 502 12: bc 50 00\n\
3839 502 12: bc 51 00\n\
3840 502 12: bc 52 00\n\
3841 502 12: bc 53 00\n\
3842 502 12: bc 54 00\n\
3843 502 12: bc 55 00\n\
3844 502 12: bc 56 00\n\
3845 502 12: bc 57 00\n\
3846 502 12: bc 58 00\n\
3847 502 12: bc 59 00\n\
3848 502 12: bc 5a 00\n\
3849 502 12: bc 62 7f\n\
3850 502 12: bc 63 7f\n\
3851 502 12: bc 64 7f\n\
3852 502 12: bc 65 7f\n\
3853 502 12: bc 66 00\n\
3854 502 12: bc 67 00\n\
3855 502 12: bc 68 00\n\
3856 502 12: bc 69 00\n\
3857 502 12: bc 6a 00\n\
3858 502 12: bc 6b 00\n\
3859 502 12: bc 6c 00\n\
3860 502 12: bc 6d 00\n\
3861 502 12: bc 6e 00\n\
3862 502 12: bc 6f 00\n\
3863 502 12: bc 70 00\n\
3864 502 12: bc 71 00\n\
3865 502 12: bc 72 00\n\
3866 502 12: bc 73 00\n\
3867 502 12: bc 74 00\n\
3868 502 12: bc 75 00\n\
3869 502 12: bc 76 00\n\
3870 502 12: bc 77 00\n\
3871 503 12: 8c 40 3f\n\
3872 504 13: bd 40 00\n\
3873 504 13: bd 42 00\n\
3874 504 13: bd 44 00\n\
3875 504 13: bd 45 00\n\
3876 504 13: bd 00 25\n\
3877 504 13: bd 20 45\n\
3878 504 13: 9d 40 41\n\
3879 504 13: bd 07 28\n\
3880 504 13: bd 0a 17\n\
3881 504 13: bd 46 43\n\
3882 504 13: bd 47 68\n\
3883 504 13: bd 48 0d\n\
3884 504 13: bd 49 32\n\
3885 504 13: bd 4a 57\n\
3886 504 13: bd 4b 7c\n\
3887 504 13: bd 4c 21\n\
3888 504 13: bd 4d 46\n\
3889 504 13: bd 4e 6b\n\
3890 504 13: bd 4f 10\n\
3891 504 13: bd 5b 4c\n\
3892 504 13: bd 5c 71\n\
3893 504 13: bd 5d 16\n\
3894 504 13: bd 5e 3b\n\
3895 504 13: bd 5f 60\n\
3896 504 13: bd 01 00\n\
3897 504 13: bd 02 00\n\
3898 504 13: bd 03 00\n\
3899 504 13: bd 04 00\n\
3900 504 13: bd 05 00\n\
3901 504 13: bd 08 40\n\
3902 504 13: bd 09 00\n\
3903 504 13: bd 0b 7f\n\
3904 504 13: bd 0c 00\n\
3905 504 13: bd 0d 00\n\
3906 504 13: bd 0e 00\n\
3907 504 13: bd 0f 00\n\
3908 504 13: bd 10 00\n\
3909 504 13: bd 11 00\n\
3910 504 13: bd 12 00\n\
3911 504 13: bd 13 00\n\
3912 504 13: bd 14 00\n\
3913 504 13: bd 15 00\n\
3914 504 13: bd 16 00\n\
3915 504 13: bd 17 00\n\
3916 504 13: bd 18 00\n\
3917 504 13: bd 19 00\n\
3918 504 13: bd 1a 00\n\
3919 504 13: bd 1b 00\n\
3920 504 13: bd 1c 00\n\
3921 504 13: bd 1d 00\n\
3922 504 13: bd 1e 00\n\
3923 504 13: bd 1f 00\n\
3924 504 13: bd 21 00\n\
3925 504 13: bd 22 00\n\
3926 504 13: bd 23 00\n\
3927 504 13: bd 24 00\n\
3928 504 13: bd 25 00\n\
3929 504 13: bd 27 00\n\
3930 504 13: bd 28 00\n\
3931 504 13: bd 29 00\n\
3932 504 13: bd 2a 00\n\
3933 504 13: bd 2b 7f\n\
3934 504 13: bd 2c 00\n\
3935 504 13: bd 2d 00\n\
3936 504 13: bd 2e 00\n\
3937 504 13: bd 2f 00\n\
3938 504 13: bd 30 00\n\
3939 504 13: bd 31 00\n\
3940 504 13: bd 32 00\n\
3941 504 13: bd 33 00\n\
3942 504 13: bd 34 00\n\
3943 504 13: bd 35 00\n\
3944 504 13: bd 36 00\n\
3945 504 13: bd 37 00\n\
3946 504 13: bd 38 00\n\
3947 504 13: bd 39 00\n\
3948 504 13: bd 3a 00\n\
3949 504 13: bd 3b 00\n\
3950 504 13: bd 3c 00\n\
3951 504 13: bd 3d 00\n\
3952 504 13: bd 3e 00\n\
3953 504 13: bd 3f 00\n\
3954 504 13: bd 41 00\n\
3955 504 13: bd 43 00\n\
3956 504 13: bd 50 00\n\
3957 504 13: bd 51 00\n\
3958 504 13: bd 52 00\n\
3959 504 13: bd 53 00\n\
3960 504 13: bd 54 00\n\
3961 504 13: bd 55 00\n\
3962 504 13: bd 56 00\n\
3963 504 13: bd 57 00\n\
3964 504 13: bd 58 00\n\
3965 504 13: bd 59 00\n\
3966 504 13: bd 5a 00\n\
3967 504 13: bd 62 7f\n\
3968 504 13: bd 63 7f\n\
3969 504 13: bd 64 7f\n\
3970 504 13: bd 65 7f\n\
3971 504 13: bd 66 00\n\
3972 504 13: bd 67 00\n\
3973 504 13: bd 68 00\n\
3974 504 13: bd 69 00\n\
3975 504 13: bd 6a 00\n\
3976 504 13: bd 6b 00\n\
3977 504 13: bd 6c 00\n\
3978 504 13: bd 6d 00\n\
3979 504 13: bd 6e 00\n\
3980 504 13: bd 6f 00\n\
3981 504 13: bd 70 00\n\
3982 504 13: bd 71 00\n\
3983 504 13: bd 72 00\n\
3984 504 13: bd 73 00\n\
3985 504 13: bd 74 00\n\
3986 504 13: bd 75 00\n\
3987 504 13: bd 76 00\n\
3988 504 13: bd 77 00\n\
3989 505 13: 8d 40 41\n\
3990 506 14: be 40 00\n\
3991 506 14: be 42 00\n\
3992 506 14: be 44 00\n\
3993 506 14: be 45 00\n\
3994 506 14: be 00 25\n\
3995 506 14: be 20 45\n\
3996 506 14: 9e 40 43\n\
3997 506 14: be 07 28\n\
3998 506 14: be 0a 17\n\
3999 506 14: be 46 43\n\
4000 506 14: be 47 68\n\
4001 506 14: be 48 0d\n\
4002 506 14: be 49 32\n\
4003 506 14: be 4a 57\n\
4004 506 14: be 4b 7c\n\
4005 506 14: be 4c 21\n\
4006 506 14: be 4d 46\n\
4007 506 14: be 4e 6b\n\
4008 506 14: be 4f 10\n\
4009 506 14: be 5b 4c\n\
4010 506 14: be 5c 71\n\
4011 506 14: be 5d 16\n\
4012 506 14: be 5e 3b\n\
4013 506 14: be 5f 60\n\
4014 506 14: be 01 00\n\
4015 506 14: be 02 00\n\
4016 506 14: be 03 00\n\
4017 506 14: be 04 00\n\
4018 506 14: be 05 00\n\
4019 506 14: be 08 40\n\
4020 506 14: be 09 00\n\
4021 506 14: be 0b 7f\n\
4022 506 14: be 0c 00\n\
4023 506 14: be 0d 00\n\
4024 506 14: be 0e 00\n\
4025 506 14: be 0f 00\n\
4026 506 14: be 10 00\n\
4027 506 14: be 11 00\n\
4028 506 14: be 12 00\n\
4029 506 14: be 13 00\n\
4030 506 14: be 14 00\n\
4031 506 14: be 15 00\n\
4032 506 14: be 16 00\n\
4033 506 14: be 17 00\n\
4034 506 14: be 18 00\n\
4035 506 14: be 19 00\n\
4036 506 14: be 1a 00\n\
4037 506 14: be 1b 00\n\
4038 506 14: be 1c 00\n\
4039 506 14: be 1d 00\n\
4040 506 14: be 1e 00\n\
4041 506 14: be 1f 00\n\
4042 506 14: be 21 00\n\
4043 506 14: be 22 00\n\
4044 506 14: be 23 00\n\
4045 506 14: be 24 00\n\
4046 506 14: be 25 00\n\
4047 506 14: be 27 00\n\
4048 506 14: be 28 00\n\
4049 506 14: be 29 00\n\
4050 506 14: be 2a 00\n\
4051 506 14: be 2b 7f\n\
4052 506 14: be 2c 00\n\
4053 506 14: be 2d 00\n\
4054 506 14: be 2e 00\n\
4055 506 14: be 2f 00\n\
4056 506 14: be 30 00\n\
4057 506 14: be 31 00\n\
4058 506 14: be 32 00\n\
4059 506 14: be 33 00\n\
4060 506 14: be 34 00\n\
4061 506 14: be 35 00\n\
4062 506 14: be 36 00\n\
4063 506 14: be 37 00\n\
4064 506 14: be 38 00\n\
4065 506 14: be 39 00\n\
4066 506 14: be 3a 00\n\
4067 506 14: be 3b 00\n\
4068 506 14: be 3c 00\n\
4069 506 14: be 3d 00\n\
4070 506 14: be 3e 00\n\
4071 506 14: be 3f 00\n\
4072 506 14: be 41 00\n\
4073 506 14: be 43 00\n\
4074 506 14: be 50 00\n\
4075 506 14: be 51 00\n\
4076 506 14: be 52 00\n\
4077 506 14: be 53 00\n\
4078 506 14: be 54 00\n\
4079 506 14: be 55 00\n\
4080 506 14: be 56 00\n\
4081 506 14: be 57 00\n\
4082 506 14: be 58 00\n\
4083 506 14: be 59 00\n\
4084 506 14: be 5a 00\n\
4085 506 14: be 62 7f\n\
4086 506 14: be 63 7f\n\
4087 506 14: be 64 7f\n\
4088 506 14: be 65 7f\n\
4089 506 14: be 66 00\n\
4090 506 14: be 67 00\n\
4091 506 14: be 68 00\n\
4092 506 14: be 69 00\n\
4093 506 14: be 6a 00\n\
4094 506 14: be 6b 00\n\
4095 506 14: be 6c 00\n\
4096 506 14: be 6d 00\n\
4097 506 14: be 6e 00\n\
4098 506 14: be 6f 00\n\
4099 506 14: be 70 00\n\
4100 506 14: be 71 00\n\
4101 506 14: be 72 00\n\
4102 506 14: be 73 00\n\
4103 506 14: be 74 00\n\
4104 506 14: be 75 00\n\
4105 506 14: be 76 00\n\
4106 506 14: be 77 00\n\
4107 507 14: 8e 40 43\n\
4108 508 15: bf 40 00\n\
4109 508 15: bf 42 00\n\
4110 508 15: bf 44 00\n\
4111 508 15: bf 45 00\n\
4112 508 15: bf 00 25\n\
4113 508 15: bf 20 45\n\
4114 508 15: 9f 40 45\n\
4115 508 15: bf 07 28\n\
4116 508 15: bf 0a 17\n\
4117 508 15: bf 46 43\n\
4118 508 15: bf 47 68\n\
4119 508 15: bf 48 0d\n\
4120 508 15: bf 49 32\n\
4121 508 15: bf 4a 57\n\
4122 508 15: bf 4b 7c\n\
4123 508 15: bf 4c 21\n\
4124 508 15: bf 4d 46\n\
4125 508 15: bf 4e 6b\n\
4126 508 15: bf 4f 10\n\
4127 508 15: bf 5b 4c\n\
4128 508 15: bf 5c 71\n\
4129 508 15: bf 5d 16\n\
4130 508 15: bf 5e 3b\n\
4131 508 15: bf 5f 60\n\
4132 508 15: bf 01 00\n\
4133 508 15: bf 02 00\n\
4134 508 15: bf 03 00\n\
4135 508 15: bf 04 00\n\
4136 508 15: bf 05 00\n\
4137 508 15: bf 08 40\n\
4138 508 15: bf 09 00\n\
4139 508 15: bf 0b 7f\n\
4140 508 15: bf 0c 00\n\
4141 508 15: bf 0d 00\n\
4142 508 15: bf 0e 00\n\
4143 508 15: bf 0f 00\n\
4144 508 15: bf 10 00\n\
4145 508 15: bf 11 00\n\
4146 508 15: bf 12 00\n\
4147 508 15: bf 13 00\n\
4148 508 15: bf 14 00\n\
4149 508 15: bf 15 00\n\
4150 508 15: bf 16 00\n\
4151 508 15: bf 17 00\n\
4152 508 15: bf 18 00\n\
4153 508 15: bf 19 00\n\
4154 508 15: bf 1a 00\n\
4155 508 15: bf 1b 00\n\
4156 508 15: bf 1c 00\n\
4157 508 15: bf 1d 00\n\
4158 508 15: bf 1e 00\n\
4159 508 15: bf 1f 00\n\
4160 508 15: bf 21 00\n\
4161 508 15: bf 22 00\n\
4162 508 15: bf 23 00\n\
4163 508 15: bf 24 00\n\
4164 508 15: bf 25 00\n\
4165 508 15: bf 27 00\n\
4166 508 15: bf 28 00\n\
4167 508 15: bf 29 00\n\
4168 508 15: bf 2a 00\n\
4169 508 15: bf 2b 7f\n\
4170 508 15: bf 2c 00\n\
4171 508 15: bf 2d 00\n\
4172 508 15: bf 2e 00\n\
4173 508 15: bf 2f 00\n\
4174 508 15: bf 30 00\n\
4175 508 15: bf 31 00\n\
4176 508 15: bf 32 00\n\
4177 508 15: bf 33 00\n\
4178 508 15: bf 34 00\n\
4179 508 15: bf 35 00\n\
4180 508 15: bf 36 00\n\
4181 508 15: bf 37 00\n\
4182 508 15: bf 38 00\n\
4183 508 15: bf 39 00\n\
4184 508 15: bf 3a 00\n\
4185 508 15: bf 3b 00\n\
4186 508 15: bf 3c 00\n\
4187 508 15: bf 3d 00\n\
4188 508 15: bf 3e 00\n\
4189 508 15: bf 3f 00\n\
4190 508 15: bf 41 00\n\
4191 508 15: bf 43 00\n\
4192 508 15: bf 50 00\n\
4193 508 15: bf 51 00\n\
4194 508 15: bf 52 00\n\
4195 508 15: bf 53 00\n\
4196 508 15: bf 54 00\n\
4197 508 15: bf 55 00\n\
4198 508 15: bf 56 00\n\
4199 508 15: bf 57 00\n\
4200 508 15: bf 58 00\n\
4201 508 15: bf 59 00\n\
4202 508 15: bf 5a 00\n\
4203 508 15: bf 62 7f\n\
4204 508 15: bf 63 7f\n\
4205 508 15: bf 64 7f\n\
4206 508 15: bf 65 7f\n\
4207 508 15: bf 66 00\n\
4208 508 15: bf 67 00\n\
4209 508 15: bf 68 00\n\
4210 508 15: bf 69 00\n\
4211 508 15: bf 6a 00\n\
4212 508 15: bf 6b 00\n\
4213 508 15: bf 6c 00\n\
4214 508 15: bf 6d 00\n\
4215 508 15: bf 6e 00\n\
4216 508 15: bf 6f 00\n\
4217 508 15: bf 70 00\n\
4218 508 15: bf 71 00\n\
4219 508 15: bf 72 00\n\
4220 508 15: bf 73 00\n\
4221 508 15: bf 74 00\n\
4222 508 15: bf 75 00\n\
4223 508 15: bf 76 00\n\
4224 508 15: bf 77 00\n\
4225 509 15: 8f 40 45\n\
4226 510 0: b0 00 25\n\
4227 510 0: b0 20 45\n\
4228 510 0: 90 40 47\n\
4229 510 0: b0 01 00\n\
4230 510 0: b0 03 00\n\
4231 510 0: b0 05 00\n\
4232 510 0: b0 08 40\n\
4233 510 0: b0 0b 7f\n\
4234 510 0: b0 0d 00\n\
4235 510 0: b0 0f 00\n\
4236 510 0: b0 11 00\n\
4237 510 0: b0 13 00\n\
4238 510 0: b0 15 00\n\
4239 510 0: b0 17 00\n\
4240 510 0: b0 19 00\n\
4241 510 0: b0 1b 00\n\
4242 510 0: b0 1d 00\n\
4243 510 0: b0 1f 00\n\
4244 510 0: b0 22 00\n\
4245 510 0: b0 24 00\n\
4246 510 0: b0 27 00\n\
4247 510 0: b0 29 00\n\
4248 510 0: b0 2b 7f\n\
4249 510 0: b0 2d 00\n\
4250 510 0: b0 2f 00\n\
4251 510 0: b0 31 00\n\
4252 510 0: b0 33 00\n\
4253 510 0: b0 35 00\n\
4254 510 0: b0 37 00\n\
4255 510 0: b0 39 00\n\
4256 510 0: b0 3b 00\n\
4257 510 0: b0 3d 00\n\
4258 510 0: b0 3f 00\n\
4259 510 0: b0 43 00\n\
4260 510 0: b0 50 00\n\
4261 510 0: b0 52 00\n\
4262 510 0: b0 54 00\n\
4263 510 0: b0 56 00\n\
4264 510 0: b0 58 00\n\
4265 510 0: b0 5a 00\n\
4266 510 0: b0 66 00\n\
4267 510 0: b0 68 00\n\
4268 510 0: b0 6a 00\n\
4269 510 0: b0 6c 00\n\
4270 510 0: b0 6e 00\n\
4271 510 0: b0 70 00\n\
4272 510 0: b0 72 00\n\
4273 510 0: b0 74 00\n\
4274 510 0: b0 76 00\n\
4275 510 0: b0 02 00\n\
4276 510 0: b0 04 00\n\
4277 510 0: b0 09 00\n\
4278 510 0: b0 0c 00\n\
4279 510 0: b0 0e 00\n\
4280 510 0: b0 10 00\n\
4281 510 0: b0 12 00\n\
4282 510 0: b0 14 00\n\
4283 510 0: b0 16 00\n\
4284 510 0: b0 18 00\n\
4285 510 0: b0 1a 00\n\
4286 510 0: b0 1c 00\n\
4287 510 0: b0 1e 00\n\
4288 510 0: b0 21 00\n\
4289 510 0: b0 23 00\n\
4290 510 0: b0 25 00\n\
4291 510 0: b0 28 00\n\
4292 510 0: b0 2a 00\n\
4293 510 0: b0 2c 00\n\
4294 510 0: b0 2e 00\n\
4295 510 0: b0 30 00\n\
4296 510 0: b0 32 00\n\
4297 510 0: b0 34 00\n\
4298 510 0: b0 36 00\n\
4299 510 0: b0 38 00\n\
4300 510 0: b0 3a 00\n\
4301 510 0: b0 3c 00\n\
4302 510 0: b0 3e 00\n\
4303 510 0: b0 41 00\n\
4304 510 0: b0 51 00\n\
4305 510 0: b0 53 00\n\
4306 510 0: b0 55 00\n\
4307 510 0: b0 57 00\n\
4308 510 0: b0 59 00\n\
4309 510 0: b0 62 7f\n\
4310 510 0: b0 63 7f\n\
4311 510 0: b0 64 7f\n\
4312 510 0: b0 65 7f\n\
4313 510 0: b0 67 00\n\
4314 510 0: b0 69 00\n\
4315 510 0: b0 6b 00\n\
4316 510 0: b0 6d 00\n\
4317 510 0: b0 6f 00\n\
4318 510 0: b0 71 00\n\
4319 510 0: b0 73 00\n\
4320 510 0: b0 75 00\n\
4321 510 0: b0 77 00\n\
4322 511 0: 80 40 47\n\
4323 512 1: b1 00 25\n\
4324 512 1: b1 20 45\n\
4325 512 1: 91 40 49\n\
4326 512 1: b1 01 00\n\
4327 512 1: b1 03 00\n\
4328 512 1: b1 05 00\n\
4329 512 1: b1 08 40\n\
4330 512 1: b1 0b 7f\n\
4331 512 1: b1 0d 00\n\
4332 512 1: b1 0f 00\n\
4333 512 1: b1 11 00\n\
4334 512 1: b1 13 00\n\
4335 512 1: b1 15 00\n\
4336 512 1: b1 17 00\n\
4337 512 1: b1 19 00\n\
4338 512 1: b1 1b 00\n\
4339 512 1: b1 1d 00\n\
4340 512 1: b1 1f 00\n\
4341 512 1: b1 22 00\n\
4342 512 1: b1 24 00\n\
4343 512 1: b1 27 00\n\
4344 512 1: b1 29 00\n\
4345 512 1: b1 2b 7f\n\
4346 512 1: b1 2d 00\n\
4347 512 1: b1 2f 00\n\
4348 512 1: b1 31 00\n\
4349 512 1: b1 33 00\n\
4350 512 1: b1 35 00\n\
4351 512 1: b1 37 00\n\
4352 512 1: b1 39 00\n\
4353 512 1: b1 3b 00\n\
4354 512 1: b1 3d 00\n\
4355 512 1: b1 3f 00\n\
4356 512 1: b1 43 00\n\
4357 512 1: b1 50 00\n\
4358 512 1: b1 52 00\n\
4359 512 1: b1 54 00\n\
4360 512 1: b1 56 00\n\
4361 512 1: b1 58 00\n\
4362 512 1: b1 5a 00\n\
4363 512 1: b1 66 00\n\
4364 512 1: b1 68 00\n\
4365 512 1: b1 6a 00\n\
4366 512 1: b1 6c 00\n\
4367 512 1: b1 6e 00\n\
4368 512 1: b1 70 00\n\
4369 512 1: b1 72 00\n\
4370 512 1: b1 74 00\n\
4371 512 1: b1 76 00\n\
4372 512 1: b1 02 00\n\
4373 512 1: b1 04 00\n\
4374 512 1: b1 09 00\n\
4375 512 1: b1 0c 00\n\
4376 512 1: b1 0e 00\n\
4377 512 1: b1 10 00\n\
4378 512 1: b1 12 00\n\
4379 512 1: b1 14 00\n\
4380 512 1: b1 16 00\n\
4381 512 1: b1 18 00\n\
4382 512 1: b1 1a 00\n\
4383 512 1: b1 1c 00\n\
4384 512 1: b1 1e 00\n\
4385 512 1: b1 21 00\n\
4386 512 1: b1 23 00\n\
4387 512 1: b1 25 00\n\
4388 512 1: b1 28 00\n\
4389 512 1: b1 2a 00\n\
4390 512 1: b1 2c 00\n\
4391 512 1: b1 2e 00\n\
4392 512 1: b1 30 00\n\
4393 512 1: b1 32 00\n\
4394 512 1: b1 34 00\n\
4395 512 1: b1 36 00\n\
4396 512 1: b1 38 00\n\
4397 512 1: b1 3a 00\n\
4398 512 1: b1 3c 00\n\
4399 512 1: b1 3e 00\n\
4400 512 1: b1 41 00\n\
4401 512 1: b1 51 00\n\
4402 512 1: b1 53 00\n\
4403 512 1: b1 55 00\n\
4404 512 1: b1 57 00\n\
4405 512 1: b1 59 00\n\
4406 512 1: b1 62 7f\n\
4407 512 1: b1 63 7f\n\
4408 512 1: b1 64 7f\n\
4409 512 1: b1 65 7f\n\
4410 512 1: b1 67 00\n\
4411 512 1: b1 69 00\n\
4412 512 1: b1 6b 00\n\
4413 512 1: b1 6d 00\n\
4414 512 1: b1 6f 00\n\
4415 512 1: b1 71 00\n\
4416 512 1: b1 73 00\n\
4417 512 1: b1 75 00\n\
4418 512 1: b1 77 00\n\
4419 513 1: 81 40 49\n\
4420 514 2: b2 00 25\n\
4421 514 2: b2 20 45\n\
4422 514 2: 92 40 49\n\
4423 514 2: b2 01 00\n\
4424 514 2: b2 03 00\n\
4425 514 2: b2 05 00\n\
4426 514 2: b2 08 40\n\
4427 514 2: b2 0b 7f\n\
4428 514 2: b2 0d 00\n\
4429 514 2: b2 0f 00\n\
4430 514 2: b2 11 00\n\
4431 514 2: b2 13 00\n\
4432 514 2: b2 15 00\n\
4433 514 2: b2 17 00\n\
4434 514 2: b2 19 00\n\
4435 514 2: b2 1b 00\n\
4436 514 2: b2 1d 00\n\
4437 514 2: b2 1f 00\n\
4438 514 2: b2 22 00\n\
4439 514 2: b2 24 00\n\
4440 514 2: b2 27 00\n\
4441 514 2: b2 29 00\n\
4442 514 2: b2 2b 7f\n\
4443 514 2: b2 2d 00\n\
4444 514 2: b2 2f 00\n\
4445 514 2: b2 31 00\n\
4446 514 2: b2 33 00\n\
4447 514 2: b2 35 00\n\
4448 514 2: b2 37 00\n\
4449 514 2: b2 39 00\n\
4450 514 2: b2 3b 00\n\
4451 514 2: b2 3d 00\n\
4452 514 2: b2 3f 00\n\
4453 514 2: b2 43 00\n\
4454 514 2: b2 50 00\n\
4455 514 2: b2 52 00\n\
4456 514 2: b2 54 00\n\
4457 514 2: b2 56 00\n\
4458 514 2: b2 58 00\n\
4459 514 2: b2 5a 00\n\
4460 514 2: b2 66 00\n\
4461 514 2: b2 68 00\n\
4462 514 2: b2 6a 00\n\
4463 514 2: b2 6c 00\n\
4464 514 2: b2 6e 00\n\
4465 514 2: b2 70 00\n\
4466 514 2: b2 72 00\n\
4467 514 2: b2 74 00\n\
4468 514 2: b2 76 00\n\
4469 514 2: b2 02 00\n\
4470 514 2: b2 04 00\n\
4471 514 2: b2 09 00\n\
4472 514 2: b2 0c 00\n\
4473 514 2: b2 0e 00\n\
4474 514 2: b2 10 00\n\
4475 514 2: b2 12 00\n\
4476 514 2: b2 14 00\n\
4477 514 2: b2 16 00\n\
4478 514 2: b2 18 00\n\
4479 514 2: b2 1a 00\n\
4480 514 2: b2 1c 00\n\
4481 514 2: b2 1e 00\n\
4482 514 2: b2 21 00\n\
4483 514 2: b2 23 00\n\
4484 514 2: b2 25 00\n\
4485 514 2: b2 28 00\n\
4486 514 2: b2 2a 00\n\
4487 514 2: b2 2c 00\n\
4488 514 2: b2 2e 00\n\
4489 514 2: b2 30 00\n\
4490 514 2: b2 32 00\n\
4491 514 2: b2 34 00\n\
4492 514 2: b2 36 00\n\
4493 514 2: b2 38 00\n\
4494 514 2: b2 3a 00\n\
4495 514 2: b2 3c 00\n\
4496 514 2: b2 3e 00\n\
4497 514 2: b2 41 00\n\
4498 514 2: b2 51 00\n\
4499 514 2: b2 53 00\n\
4500 514 2: b2 55 00\n\
4501 514 2: b2 57 00\n\
4502 514 2: b2 59 00\n\
4503 514 2: b2 62 7f\n\
4504 514 2: b2 63 7f\n\
4505 514 2: b2 64 7f\n\
4506 514 2: b2 65 7f\n\
4507 514 2: b2 67 00\n\
4508 514 2: b2 69 00\n\
4509 514 2: b2 6b 00\n\
4510 514 2: b2 6d 00\n\
4511 514 2: b2 6f 00\n\
4512 514 2: b2 71 00\n\
4513 514 2: b2 73 00\n\
4514 514 2: b2 75 00\n\
4515 514 2: b2 77 00\n\
4516 515 2: 82 40 49\n\
4517 516 3: b3 00 25\n\
4518 516 3: b3 20 45\n\
4519 516 3: 93 40 4b\n\
4520 516 3: b3 01 00\n\
4521 516 3: b3 03 00\n\
4522 516 3: b3 05 00\n\
4523 516 3: b3 08 40\n\
4524 516 3: b3 0b 7f\n\
4525 516 3: b3 0d 00\n\
4526 516 3: b3 0f 00\n\
4527 516 3: b3 11 00\n\
4528 516 3: b3 13 00\n\
4529 516 3: b3 15 00\n\
4530 516 3: b3 17 00\n\
4531 516 3: b3 19 00\n\
4532 516 3: b3 1b 00\n\
4533 516 3: b3 1d 00\n\
4534 516 3: b3 1f 00\n\
4535 516 3: b3 22 00\n\
4536 516 3: b3 24 00\n\
4537 516 3: b3 27 00\n\
4538 516 3: b3 29 00\n\
4539 516 3: b3 2b 7f\n\
4540 516 3: b3 2d 00\n\
4541 516 3: b3 2f 00\n\
4542 516 3: b3 31 00\n\
4543 516 3: b3 33 00\n\
4544 516 3: b3 35 00\n\
4545 516 3: b3 37 00\n\
4546 516 3: b3 39 00\n\
4547 516 3: b3 3b 00\n\
4548 516 3: b3 3d 00\n\
4549 516 3: b3 3f 00\n\
4550 516 3: b3 43 00\n\
4551 516 3: b3 50 00\n\
4552 516 3: b3 52 00\n\
4553 516 3: b3 54 00\n\
4554 516 3: b3 56 00\n\
4555 516 3: b3 58 00\n\
4556 516 3: b3 5a 00\n\
4557 516 3: b3 66 00\n\
4558 516 3: b3 68 00\n\
4559 516 3: b3 6a 00\n\
4560 516 3: b3 6c 00\n\
4561 516 3: b3 6e 00\n\
4562 516 3: b3 70 00\n\
4563 516 3: b3 72 00\n\
4564 516 3: b3 74 00\n\
4565 516 3: b3 76 00\n\
4566 516 3: b3 02 00\n\
4567 516 3: b3 04 00\n\
4568 516 3: b3 09 00\n\
4569 516 3: b3 0c 00\n\
4570 516 3: b3 0e 00\n\
4571 516 3: b3 10 00\n\
4572 516 3: b3 12 00\n\
4573 516 3: b3 14 00\n\
4574 516 3: b3 16 00\n\
4575 516 3: b3 18 00\n\
4576 516 3: b3 1a 00\n\
4577 516 3: b3 1c 00\n\
4578 516 3: b3 1e 00\n\
4579 516 3: b3 21 00\n\
4580 516 3: b3 23 00\n\
4581 516 3: b3 25 00\n\
4582 516 3: b3 28 00\n\
4583 516 3: b3 2a 00\n\
4584 516 3: b3 2c 00\n\
4585 516 3: b3 2e 00\n\
4586 516 3: b3 30 00\n\
4587 516 3: b3 32 00\n\
4588 516 3: b3 34 00\n\
4589 516 3: b3 36 00\n\
4590 516 3: b3 38 00\n\
4591 516 3: b3 3a 00\n\
4592 516 3: b3 3c 00\n\
4593 516 3: b3 3e 00\n\
4594 516 3: b3 41 00\n\
4595 516 3: b3 51 00\n\
4596 516 3: b3 53 00\n\
4597 516 3: b3 55 00\n\
4598 516 3: b3 57 00\n\
4599 516 3: b3 59 00\n\
4600 516 3: b3 62 7f\n\
4601 516 3: b3 63 7f\n\
4602 516 3: b3 64 7f\n\
4603 516 3: b3 65 7f\n\
4604 516 3: b3 67 00\n\
4605 516 3: b3 69 00\n\
4606 516 3: b3 6b 00\n\
4607 516 3: b3 6d 00\n\
4608 516 3: b3 6f 00\n\
4609 516 3: b3 71 00\n\
4610 516 3: b3 73 00\n\
4611 516 3: b3 75 00\n\
4612 516 3: b3 77 00\n\
4613 517 3: 83 40 4b\n\
4614 518 4: b4 00 25\n\
4615 518 4: b4 20 45\n\
4616 518 4: 94 40 4d\n\
4617 518 4: b4 01 00\n\
4618 518 4: b4 03 00\n\
4619 518 4: b4 05 00\n\
4620 518 4: b4 08 40\n\
4621 518 4: b4 0b 7f\n\
4622 518 4: b4 0d 00\n\
4623 518 4: b4 0f 00\n\
4624 518 4: b4 11 00\n\
4625 518 4: b4 13 00\n\
4626 518 4: b4 15 00\n\
4627 518 4: b4 17 00\n\
4628 518 4: b4 19 00\n\
4629 518 4: b4 1b 00\n\
4630 518 4: b4 1d 00\n\
4631 518 4: b4 1f 00\n\
4632 518 4: b4 22 00\n\
4633 518 4: b4 24 00\n\
4634 518 4: b4 27 00\n\
4635 518 4: b4 29 00\n\
4636 518 4: b4 2b 7f\n\
4637 518 4: b4 2d 00\n\
4638 518 4: b4 2f 00\n\
4639 518 4: b4 31 00\n\
4640 518 4: b4 33 00\n\
4641 518 4: b4 35 00\n\
4642 518 4: b4 37 00\n\
4643 518 4: b4 39 00\n\
4644 518 4: b4 3b 00\n\
4645 518 4: b4 3d 00\n\
4646 518 4: b4 3f 00\n\
4647 518 4: b4 43 00\n\
4648 518 4: b4 50 00\n\
4649 518 4: b4 52 00\n\
4650 518 4: b4 54 00\n\
4651 518 4: b4 56 00\n\
4652 518 4: b4 58 00\n\
4653 518 4: b4 5a 00\n\
4654 518 4: b4 66 00\n\
4655 518 4: b4 68 00\n\
4656 518 4: b4 6a 00\n\
4657 518 4: b4 6c 00\n\
4658 518 4: b4 6e 00\n\
4659 518 4: b4 70 00\n\
4660 518 4: b4 72 00\n\
4661 518 4: b4 74 00\n\
4662 518 4: b4 76 00\n\
4663 518 4: b4 02 00\n\
4664 518 4: b4 04 00\n\
4665 518 4: b4 09 00\n\
4666 518 4: b4 0c 00\n\
4667 518 4: b4 0e 00\n\
4668 518 4: b4 10 00\n\
4669 518 4: b4 12 00\n\
4670 518 4: b4 14 00\n\
4671 518 4: b4 16 00\n\
4672 518 4: b4 18 00\n\
4673 518 4: b4 1a 00\n\
4674 518 4: b4 1c 00\n\
4675 518 4: b4 1e 00\n\
4676 518 4: b4 21 00\n\
4677 518 4: b4 23 00\n\
4678 518 4: b4 25 00\n\
4679 518 4: b4 28 00\n\
4680 518 4: b4 2a 00\n\
4681 518 4: b4 2c 00\n\
4682 518 4: b4 2e 00\n\
4683 518 4: b4 30 00\n\
4684 518 4: b4 32 00\n\
4685 518 4: b4 34 00\n\
4686 518 4: b4 36 00\n\
4687 518 4: b4 38 00\n\
4688 518 4: b4 3a 00\n\
4689 518 4: b4 3c 00\n\
4690 518 4: b4 3e 00\n\
4691 518 4: b4 41 00\n\
4692 518 4: b4 51 00\n\
4693 518 4: b4 53 00\n\
4694 518 4: b4 55 00\n\
4695 518 4: b4 57 00\n\
4696 518 4: b4 59 00\n\
4697 518 4: b4 62 7f\n\
4698 518 4: b4 63 7f\n\
4699 518 4: b4 64 7f\n\
4700 518 4: b4 65 7f\n\
4701 518 4: b4 67 00\n\
4702 518 4: b4 69 00\n\
4703 518 4: b4 6b 00\n\
4704 518 4: b4 6d 00\n\
4705 518 4: b4 6f 00\n\
4706 518 4: b4 71 00\n\
4707 518 4: b4 73 00\n\
4708 518 4: b4 75 00\n\
4709 518 4: b4 77 00\n\
4710 519 4: 84 40 4d\n\
4711 520 5: b5 00 25\n\
4712 520 5: b5 20 45\n\
4713 520 5: 95 40 4f\n\
4714 521 5: 85 40 4f\n\
4715 522 6: b6 00 25\n\
4716 522 6: b6 20 45\n\
4717 522 6: 96 40 4f\n\
4718 523 6: 86 40 4f\n\
4719 524 7: b7 00 25\n\
4720 524 7: b7 20 45\n\
4721 524 7: 97 40 4f\n\
4722 525 7: 87 40 4f\n\
4723 526 8: b8 00 25\n\
4724 526 8: b8 20 45\n\
4725 526 8: 98 40 4f\n\
4726 527 8: 88 40 4f\n\
4727 528 10: ba 00 25\n\
4728 528 10: ba 20 45\n\
4729 528 10: 9a 40 4f\n\
4730 529 10: 8a 40 4f\n\
4731 531 11: bb 00 25\n\
4732 531 11: bb 20 45\n\
4733 531 11: 9b 40 4f\n\
4734 531 11: 8b 40 4f\n\
4735 532 12: bc 00 25\n\
4736 532 12: bc 20 45\n\
4737 532 12: 9c 40 4f\n\
4738 533 12: 8c 40 4f\n\
4739 534 13: bd 00 25\n\
4740 534 13: bd 20 45\n\
4741 534 13: 9d 40 4f\n\
4742 535 13: 8d 40 4f\n\
4743 536 14: be 00 25\n\
4744 536 14: be 20 45\n\
4745 536 14: 9e 40 4f\n\
4746 537 14: 8e 40 4f\n\
4747 538 15: bf 00 25\n\
4748 538 15: bf 20 45\n\
4749 538 15: 9f 40 4f\n\
4750 539 15: 8f 40 4f\n\
4751 540 0: b0 00 25\n\
4752 540 0: b0 20 45\n\
4753 540 0: 90 40 4f\n\
4754 541 0: 80 40 4f\n\
4755 542 1: b1 00 25\n\
4756 542 1: b1 20 45\n\
4757 542 1: 91 40 4f\n\
4758 543 1: 81 40 4f\n\
4759 544 2: b2 00 25\n\
4760 544 2: b2 20 45\n\
4761 544 2: 92 40 4f\n\
4762 545 2: 82 40 40\n\
4763 546 ...closed.\n\
4764 "),__LINE__,(__FILE__)));
4765 
4766 }
mutabor::InputDevice in
Definition: DevMidFTest.h:84
static const listtype & GetBoxList()
Definition: Box.h:340
static const routeListType & GetRouteList()
Definition: Route.h:404
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:458
not for headers
Definition: midicmnTest.h:67
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
void SetBendingRange(int br)
Definition: midicmn.h:552
bool Check(std::string s, int line=-1, std::string filename=(__FILE__))
Definition: midicmnTest.h:88
static Box Create(int type, int id=NewBox)
Definition: Box.h:899
static const listtype & GetDeviceList()
Definition: Device.h:752
static bool BatchPlay()
Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex...
Definition: Device.cpp:446
CurrentTimer CurrentTime
Definition: timing.cpp:43
static Route Create()
Creates a generic route.
Definition: Route.h:595
void CommonMidiInputTest::testGlobalPanic ( )

Definiert in Zeile 1005 der Datei midicmnTest.cpp.

Benutzt CommonMidiInputTest::box, midicmnOutputDevice::Check(), mutabor::CommonMidiOutput< T, D >::Close(), mutabor::InputDeviceClass::Close(), DEBUGLOG, DEFAULT_PANIC, midicmnOutputDevice::getOut(), CommonMidiInputTest::in, midicmnInputDevice::NoteOff(), midicmnInputDevice::NoteOn(), midicmnInputDevice::Open(), mutabor::OutputDeviceClass::Open(), CommonMidiInputTest::out, mutabor::Panic() und mutabor::str().

1006 {
1007  CPPUNIT_ASSERT( in );
1008  out->Open();
1009  box->Open();
1010  CPPUNIT_ASSERT( out->Check(("Opened...\n"
1011  " 0: e0 00 40\n"
1012  " 0: b0 7a 00\n"
1013  " 0: b0 7d 00\n"
1014  " 0: b0 7f 00\n"
1015  " 0: b0 65 00\n"
1016  " 0: b0 64 00\n"
1017  " 0: b0 06 02\n"
1018  " 0: b0 26 00\n"
1019  " 1: e1 00 40\n"
1020  " 1: b1 7a 00\n"
1021  " 1: b1 7d 00\n"
1022  " 1: b1 7f 00\n"
1023  " 1: b1 65 00\n"
1024  " 1: b1 64 00\n"
1025  " 1: b1 06 02\n"
1026  " 1: b1 26 00\n"
1027  " 2: e2 00 40\n"
1028  " 2: b2 7a 00\n"
1029  " 2: b2 7d 00\n"
1030  " 2: b2 7f 00\n"
1031  " 2: b2 65 00\n"
1032  " 2: b2 64 00\n"
1033  " 2: b2 06 02\n"
1034  " 2: b2 26 00\n"
1035  " 3: e3 00 40\n"
1036  " 3: b3 7a 00\n"
1037  " 3: b3 7d 00\n"
1038  " 3: b3 7f 00\n"
1039  " 3: b3 65 00\n"
1040  " 3: b3 64 00\n"
1041  " 3: b3 06 02\n"
1042  " 3: b3 26 00\n"
1043  " 4: e4 00 40\n"
1044  " 4: b4 7a 00\n"
1045  " 4: b4 7d 00\n"
1046  " 4: b4 7f 00\n"
1047  " 4: b4 65 00\n"
1048  " 4: b4 64 00\n"
1049  " 4: b4 06 02\n"
1050  " 4: b4 26 00\n"
1051  " 5: e5 00 40\n"
1052  " 5: b5 7a 00\n"
1053  " 5: b5 7d 00\n"
1054  " 5: b5 7f 00\n"
1055  " 5: b5 65 00\n"
1056  " 5: b5 64 00\n"
1057  " 5: b5 06 02\n"
1058  " 5: b5 26 00\n"
1059  " 6: e6 00 40\n"
1060  " 6: b6 7a 00\n"
1061  " 6: b6 7d 00\n"
1062  " 6: b6 7f 00\n"
1063  " 6: b6 65 00\n"
1064  " 6: b6 64 00\n"
1065  " 6: b6 06 02\n"
1066  " 6: b6 26 00\n"
1067  " 7: e7 00 40\n"
1068  " 7: b7 7a 00\n"
1069  " 7: b7 7d 00\n"
1070  " 7: b7 7f 00\n"
1071  " 7: b7 65 00\n"
1072  " 7: b7 64 00\n"
1073  " 7: b7 06 02\n"
1074  " 7: b7 26 00\n"
1075  " 8: e8 00 40\n"
1076  " 8: b8 7a 00\n"
1077  " 8: b8 7d 00\n"
1078  " 8: b8 7f 00\n"
1079  " 8: b8 65 00\n"
1080  " 8: b8 64 00\n"
1081  " 8: b8 06 02\n"
1082  " 8: b8 26 00\n"
1083  " 9: e9 00 40\n"
1084  " 9: b9 7a 00\n"
1085  " 9: b9 7d 00\n"
1086  " 9: b9 7f 00\n"
1087  " 9: b9 65 00\n"
1088  " 9: b9 64 00\n"
1089  " 9: b9 06 02\n"
1090  " 9: b9 26 00\n"
1091  " 10: ea 00 40\n"
1092  " 10: ba 7a 00\n"
1093  " 10: ba 7d 00\n"
1094  " 10: ba 7f 00\n"
1095  " 10: ba 65 00\n"
1096  " 10: ba 64 00\n"
1097  " 10: ba 06 02\n"
1098  " 10: ba 26 00\n"
1099  " 11: eb 00 40\n"
1100  " 11: bb 7a 00\n"
1101  " 11: bb 7d 00\n"
1102  " 11: bb 7f 00\n"
1103  " 11: bb 65 00\n"
1104  " 11: bb 64 00\n"
1105  " 11: bb 06 02\n"
1106  " 11: bb 26 00\n"
1107  " 12: ec 00 40\n"
1108  " 12: bc 7a 00\n"
1109  " 12: bc 7d 00\n"
1110  " 12: bc 7f 00\n"
1111  " 12: bc 65 00\n"
1112  " 12: bc 64 00\n"
1113  " 12: bc 06 02\n"
1114  " 12: bc 26 00\n"
1115  " 13: ed 00 40\n"
1116  " 13: bd 7a 00\n"
1117  " 13: bd 7d 00\n"
1118  " 13: bd 7f 00\n"
1119  " 13: bd 65 00\n"
1120  " 13: bd 64 00\n"
1121  " 13: bd 06 02\n"
1122  " 13: bd 26 00\n"
1123  " 14: ee 00 40\n"
1124  " 14: be 7a 00\n"
1125  " 14: be 7d 00\n"
1126  " 14: be 7f 00\n"
1127  " 14: be 65 00\n"
1128  " 14: be 64 00\n"
1129  " 14: be 06 02\n"
1130  " 14: be 26 00\n"
1131  " 15: ef 00 40\n"
1132  " 15: bf 7a 00\n"
1133  " 15: bf 7d 00\n"
1134  " 15: bf 7f 00\n"
1135  " 15: bf 65 00\n"
1136  " 15: bf 64 00\n"
1137  " 15: bf 06 02\n"
1138  " 15: bf 26 00\n"), __LINE__, (__FILE__)) );
1139  in->Open();
1140 
1141  /* check all permutations */
1142 
1143  DEBUGLOG (midiio, "123" );
1144 
1145  in->NoteOn(0,56,96);
1146  CPPUNIT_ASSERT( out->Check((" 0: 90 38 60\n"), __LINE__, (__FILE__) ) );
1147  in->NoteOn(0,60,97);
1148  CPPUNIT_ASSERT( out->Check((" 1: 91 3c 61\n"), __LINE__, (__FILE__) ) );
1149  in->NoteOn(0,63,98);
1150  CPPUNIT_ASSERT( out->Check((" 2: 92 3f 62\n"), __LINE__, (__FILE__) ) );
1151 
1152  in->NoteOff(0,56,53);
1153  CPPUNIT_ASSERT( out->Check((" 0: 80 38 35\n"), __LINE__, (__FILE__) ) );
1154  in->NoteOff(0,60,54);
1155  CPPUNIT_ASSERT( out->Check((" 1: 81 3c 36\n"), __LINE__, (__FILE__) ) );
1156  in->NoteOff(0,63,55);
1157  CPPUNIT_ASSERT( out->Check((" 2: 82 3f 37\n"), __LINE__, (__FILE__) ) );
1158 
1159  DEBUGLOG (midiio, "132" );
1160 
1161  in->NoteOn(0,56,96);
1162  CPPUNIT_ASSERT( out->Check((" 3: 93 38 60\n"), __LINE__, (__FILE__) ) );
1163  in->NoteOn(0,60,97);
1164  CPPUNIT_ASSERT( out->Check((" 4: 94 3c 61\n"), __LINE__, (__FILE__) ) );
1165  in->NoteOn(0,63,98);
1166  CPPUNIT_ASSERT( out->Check((" 5: 95 3f 62\n"), __LINE__, (__FILE__) ) );
1167 
1168  in->NoteOff(0,56,53);
1169  CPPUNIT_ASSERT( out->Check((" 3: 83 38 35\n"), __LINE__, (__FILE__) ) );
1170  in->NoteOff(0,63,55);
1171  CPPUNIT_ASSERT( out->Check((" 5: 85 3f 37\n"), __LINE__, (__FILE__) ) );
1172  in->NoteOff(0,60,54);
1173  CPPUNIT_ASSERT( out->Check((" 4: 84 3c 36\n"), __LINE__, (__FILE__) ) );
1174 
1175  DEBUGLOG (midiio, "213" );
1176 
1177  in->NoteOn(0,56,96);
1178  CPPUNIT_ASSERT( out->Check((" 6: 96 38 60\n"), __LINE__, (__FILE__) ) );
1179  in->NoteOn(0,60,97);
1180  CPPUNIT_ASSERT( out->Check((" 7: 97 3c 61\n"), __LINE__, (__FILE__) ) );
1181  in->NoteOn(0,63,98);
1182  CPPUNIT_ASSERT( out->Check((" 8: 98 3f 62\n"), __LINE__, (__FILE__) ) );
1183 
1184  in->NoteOff(0,60,54);
1185  CPPUNIT_ASSERT( out->Check((" 7: 87 3c 36\n"), __LINE__, (__FILE__) ) );
1186  in->NoteOff(0,56,53);
1187  CPPUNIT_ASSERT( out->Check((" 6: 86 38 35\n"), __LINE__, (__FILE__) ) );
1188  in->NoteOff(0,63,55);
1189  CPPUNIT_ASSERT( out->Check((" 8: 88 3f 37\n"), __LINE__, (__FILE__) ) );
1190 
1191  DEBUGLOG (midiio, "231" );
1192 
1193  in->NoteOn(0,56,96);
1194  CPPUNIT_ASSERT( out->Check((" 10: 9a 38 60\n"), __LINE__, (__FILE__) ) );
1195  in->NoteOn(0,60,97);
1196  CPPUNIT_ASSERT( out->Check((" 11: 9b 3c 61\n"), __LINE__, (__FILE__) ) );
1197  in->NoteOn(0,63,98);
1198  CPPUNIT_ASSERT( out->Check((" 12: 9c 3f 62\n"), __LINE__, (__FILE__) ) );
1199 
1200  in->NoteOff(0,60,54);
1201  CPPUNIT_ASSERT( out->Check((" 11: 8b 3c 36\n"), __LINE__, (__FILE__) ) );
1202  in->NoteOff(0,63,55);
1203  CPPUNIT_ASSERT( out->Check((" 12: 8c 3f 37\n"), __LINE__, (__FILE__) ) );
1204  in->NoteOff(0,56,53);
1205  CPPUNIT_ASSERT( out->Check((" 10: 8a 38 35\n"), __LINE__, (__FILE__) ) );
1206 
1207  DEBUGLOG (midiio, "312" );
1208 
1209  in->NoteOn(0,56,96);
1210  CPPUNIT_ASSERT( out->Check((" 13: 9d 38 60\n"), __LINE__, (__FILE__) ) );
1211  in->NoteOn(0,60,97);
1212  CPPUNIT_ASSERT( out->Check((" 14: 9e 3c 61\n"), __LINE__, (__FILE__) ) );
1213  in->NoteOn(0,63,98);
1214  CPPUNIT_ASSERT( out->Check((" 15: 9f 3f 62\n"), __LINE__, (__FILE__) ) );
1215 
1216  in->NoteOff(0,63,55);
1217  CPPUNIT_ASSERT( out->Check((" 15: 8f 3f 37\n"), __LINE__, (__FILE__) ) );
1218  // check sending note on with velocity = 0
1219  in->NoteOff(0,56,53);
1220  CPPUNIT_ASSERT( out->Check((" 13: 8d 38 35\n"), __LINE__, (__FILE__) ) );
1221  in->NoteOff(0,60,54);
1222  CPPUNIT_ASSERT( out->Check((" 14: 8e 3c 36\n"), __LINE__, (__FILE__) ) );
1223 
1224  DEBUGLOG (midiio, "321" );
1225 
1226  // Add check for NULL as tone system parameter
1227  in->NoteOn(0,56,96);
1228  CPPUNIT_ASSERT( out->Check((" 0: 90 38 60\n"), __LINE__, (__FILE__) ) );
1229  in->NoteOn(0,60,97);
1230  CPPUNIT_ASSERT( out->Check((" 1: 91 3c 61\n"), __LINE__, (__FILE__) ) );
1231  in->NoteOn(0,63,98);
1232  CPPUNIT_ASSERT( out->Check((" 2: 92 3f 62\n"), __LINE__, (__FILE__) ) );
1233 
1234  in->NoteOff(0,63,55);
1235  CPPUNIT_ASSERT( out->Check((" 2: 82 3f 37\n"), __LINE__, (__FILE__) ) );
1236  in->NoteOff(0,60,54);
1237  CPPUNIT_ASSERT( out->Check((" 1: 81 3c 36\n"), __LINE__, (__FILE__) ) );
1238  in->NoteOff(0,56,53);
1239  CPPUNIT_ASSERT( out->Check((" 0: 80 38 35\n"), __LINE__, (__FILE__) ) );
1240 
1241  // now collect data
1242  DEBUGLOG (midiio, "123" );
1243  in->NoteOn(0,56,96);
1244  CPPUNIT_ASSERT( out->Check((" 3: 93 38 60\n"), __LINE__, (__FILE__) ) );
1245  in->NoteOn(0,60,97);
1246  CPPUNIT_ASSERT( out->Check((" 5: 95 3c 61\n"), __LINE__, (__FILE__) ) );
1247  in->NoteOn(0,63,98);
1248  CPPUNIT_ASSERT( out->Check((" 4: 94 3f 62\n"), __LINE__, (__FILE__) ) );
1249 
1250  DEBUGLOG (midiio, "132" );
1251 
1252  in->NoteOn(0,56,96);
1253  CPPUNIT_ASSERT( out->Check((" 7: 97 38 60\n"), __LINE__, (__FILE__) ) );
1254  in->NoteOn(0,60,97);
1255  CPPUNIT_ASSERT( out->Check((" 6: 96 3c 61\n"), __LINE__, (__FILE__) ) );
1256  in->NoteOn(0,63,98);
1257  CPPUNIT_ASSERT( out->Check((" 8: 98 3f 62\n"), __LINE__, (__FILE__) ) );
1258 
1259  DEBUGLOG (midiio, "213" );
1260 
1261  in->NoteOn(0,56,96);
1262  CPPUNIT_ASSERT( out->Check((" 11: 9b 38 60\n"), __LINE__, (__FILE__) ) );
1263  in->NoteOn(0,60,97);
1264  CPPUNIT_ASSERT( out->Check((" 12: 9c 3c 61\n"), __LINE__, (__FILE__) ) );
1265  in->NoteOn(0,63,98);
1266  CPPUNIT_ASSERT( out->Check((" 10: 9a 3f 62\n"), __LINE__, (__FILE__) ) );
1267 
1268  DEBUGLOG (midiio, "231" );
1269 
1270  in->NoteOn(0,56,96);
1271  CPPUNIT_ASSERT( out->Check((" 15: 9f 38 60\n"), __LINE__, (__FILE__) ) );
1272  in->NoteOn(0,60,97);
1273  CPPUNIT_ASSERT( out->Check((" 13: 9d 3c 61\n"), __LINE__, (__FILE__) ) );
1274  in->NoteOn(0,63,98);
1275  CPPUNIT_ASSERT( out->Check((" 14: 9e 3f 62\n"), __LINE__, (__FILE__) ) );
1276 
1277  DEBUGLOG (midiio, "312" );
1278 
1279  in->NoteOn(0,56,96);
1280  CPPUNIT_ASSERT( out->Check((" 2: 92 38 60\n"), __LINE__, (__FILE__) ) );
1281  in->NoteOn(0,60,97);
1282  CPPUNIT_ASSERT( out->Check((" 1: 91 3c 61\n"), __LINE__, (__FILE__) ) );
1283  in->NoteOn(0,63,98);
1284  CPPUNIT_ASSERT( out->Check((" 0: 90 3f 62\n"), __LINE__, (__FILE__) ) );
1285 
1286  DEBUGLOG (midiio, "321" );
1287 
1288  // Add check for NULL as tone system parameter
1289  in->NoteOn(0,56,96);
1290  CPPUNIT_ASSERT( out->Check((" 2: 82 38 40\n 2: 92 38 60\n"), __LINE__, (__FILE__) ) );
1291  in->NoteOn(0,60,97);
1292  CPPUNIT_ASSERT( out->Check((" 2: 82 38 40\n 2: 92 3c 61\n"), __LINE__, (__FILE__) ) );
1293  in->NoteOn(0,63,98);
1294  CPPUNIT_ASSERT( out->Check((" 3: 83 38 40\n 3: 93 3f 62\n"), __LINE__, (__FILE__) ) );
1295 
1296  in->NoteOff(0,56,53);
1297  CPPUNIT_ASSERT( out->Check((" 7: 87 38 35\n"), __LINE__, (__FILE__) ) );
1298  in->NoteOff(0,60,54);
1299  CPPUNIT_ASSERT( out->Check((" 1: 81 3c 36\n"), __LINE__, (__FILE__) ) );
1300  in->NoteOff(0,63,55);
1301  CPPUNIT_ASSERT( out->Check((" 0: 80 3f 37\n"), __LINE__, (__FILE__) ) );
1302 
1304  CPPUNIT_ASSERT( out->Check(("\
1305  2: b2 40 00\n\
1306  3: b3 40 00\n\
1307  4: b4 40 00\n\
1308  5: b5 40 00\n\
1309  6: b6 40 00\n\
1310  8: b8 40 00\n\
1311  10: ba 40 00\n\
1312  11: bb 40 00\n\
1313  12: bc 40 00\n\
1314  13: bd 40 00\n\
1315  14: be 40 00\n\
1316  15: bf 40 00\n\
1317  2: b2 42 00\n\
1318  3: b3 42 00\n\
1319  4: b4 42 00\n\
1320  5: b5 42 00\n\
1321  6: b6 42 00\n\
1322  8: b8 42 00\n\
1323  10: ba 42 00\n\
1324  11: bb 42 00\n\
1325  12: bc 42 00\n\
1326  13: bd 42 00\n\
1327  14: be 42 00\n\
1328  15: bf 42 00\n\
1329  2: b2 44 00\n\
1330  3: b3 44 00\n\
1331  4: b4 44 00\n\
1332  5: b5 44 00\n\
1333  6: b6 44 00\n\
1334  8: b8 44 00\n\
1335  10: ba 44 00\n\
1336  11: bb 44 00\n\
1337  12: bc 44 00\n\
1338  13: bd 44 00\n\
1339  14: be 44 00\n\
1340  15: bf 44 00\n\
1341  2: b2 45 00\n\
1342  3: b3 45 00\n\
1343  4: b4 45 00\n\
1344  5: b5 45 00\n\
1345  6: b6 45 00\n\
1346  8: b8 45 00\n\
1347  10: ba 45 00\n\
1348  11: bb 45 00\n\
1349  12: bc 45 00\n\
1350  13: bd 45 00\n\
1351  14: be 45 00\n\
1352  15: bf 45 00\n\
1353  3: 83 3f 62\n\
1354  4: 84 3f 62\n\
1355  8: 88 3f 62\n\
1356  10: 8a 3f 62\n\
1357  14: 8e 3f 62\n\
1358  2: 82 3c 61\n\
1359  5: 85 3c 61\n\
1360  6: 86 3c 61\n\
1361  12: 8c 3c 61\n\
1362  13: 8d 3c 61\n\
1363  11: 8b 38 60\n\
1364  15: 8f 38 60\n\
1365  0: b0 78 00\n\
1366  1: b1 78 00\n\
1367  2: b2 78 00\n\
1368  3: b3 78 00\n\
1369  4: b4 78 00\n\
1370  5: b5 78 00\n\
1371  6: b6 78 00\n\
1372  7: b7 78 00\n\
1373  8: b8 78 00\n\
1374  9: b9 78 00\n\
1375  10: ba 78 00\n\
1376  11: bb 78 00\n\
1377  12: bc 78 00\n\
1378  13: bd 78 00\n\
1379  14: be 78 00\n\
1380 "),
1381  __LINE__,
1382  (__FILE__) ) );
1383 
1384  in->NoteOff(0,56,53);
1385  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1386  in->NoteOff(0,63,55);
1387  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1388  in->NoteOff(0,60,54);
1389  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1390 
1391  in->NoteOff(0,60,54);
1392  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1393  in->NoteOff(0,56,53);
1394  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1395  in->NoteOff(0,63,55);
1396  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1397 
1398  in->NoteOff(0,60,54);
1399  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1400  in->NoteOff(0,63,55);
1401  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1402  in->NoteOff(0,56,53);
1403  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1404 
1405  in->NoteOff(0,63,55);
1406  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1407  // check sending note on with velocity = 0
1408  in->NoteOff(0,56,53);
1409  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1410  in->NoteOff(0,60,54);
1411  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1412 
1413  in->NoteOff(0,63,55);
1414  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1415  in->NoteOff(0,60,54);
1416  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1417  in->NoteOff(0,56,53);
1418  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
1419 
1420  in->Close();
1421  out->Close();
1422  DEBUGLOG (midiio, "|%s|" ,str(out->getOut()));
1423  CPPUNIT_ASSERT( out->Check(("...closed.\n"), __LINE__, (__FILE__) ) );
1424 }
#define DEBUGLOG(level,...)
Definition: debug.h:240
std::string str(T obj)
Definition: Defs.h:110
midicmnInputDevice * in
Definition: midicmnTest.h:211
#define DEFAULT_PANIC
Definition: MidiKern.h:322
mutabor::DebugMidiOutputProvider & getOut()
Definition: midicmnTest.h:78
void Panic(int type)
Definition: Box.cpp:1042
midicmnOutputDevice * out
Definition: midicmnTest.h:210
void NoteOn(int channel, int inkey, int velocity)
Definition: midicmnTest.h:161
virtual void Close()
Definition: Device.h:1121
bool Check(std::string s, int line=-1, std::string filename=(__FILE__))
Definition: midicmnTest.h:88
void NoteOff(int channel, int inkey, int velocity)
Definition: midicmnTest.h:168
mutabor::Box box
Definition: midicmnTest.h:213
void CommonMidiOutputTest::testMoreNotesThanChannels ( )

Definiert in Zeile 329 der Datei midicmnTest.cpp.

Benutzt CommonMidiOutputTest::box, CommonMidiOutputTest::cd, midicmnOutputDevice::Check(), mutabor::CommonMidiOutput< T, D >::Close(), DEBUGLOG, mutabor::OutputDeviceClass::NoteOn(), mutabor::OutputDeviceClass::Open(), CommonMidiOutputTest::out und CommonMidiOutputTest::route.

330 {
331  CPPUNIT_ASSERT( out );
332  out->Open();
333  box->Open();
334  CPPUNIT_ASSERT( out->Check(("Opened...\n"
335  " 0: e0 00 40\n"
336  " 0: b0 7a 00\n"
337  " 0: b0 7d 00\n"
338  " 0: b0 7f 00\n"
339  " 0: b0 65 00\n"
340  " 0: b0 64 00\n"
341  " 0: b0 06 02\n"
342  " 0: b0 26 00\n"
343  " 1: e1 00 40\n"
344  " 1: b1 7a 00\n"
345  " 1: b1 7d 00\n"
346  " 1: b1 7f 00\n"
347  " 1: b1 65 00\n"
348  " 1: b1 64 00\n"
349  " 1: b1 06 02\n"
350  " 1: b1 26 00\n"
351  " 2: e2 00 40\n"
352  " 2: b2 7a 00\n"
353  " 2: b2 7d 00\n"
354  " 2: b2 7f 00\n"
355  " 2: b2 65 00\n"
356  " 2: b2 64 00\n"
357  " 2: b2 06 02\n"
358  " 2: b2 26 00\n"
359  " 3: e3 00 40\n"
360  " 3: b3 7a 00\n"
361  " 3: b3 7d 00\n"
362  " 3: b3 7f 00\n"
363  " 3: b3 65 00\n"
364  " 3: b3 64 00\n"
365  " 3: b3 06 02\n"
366  " 3: b3 26 00\n"
367  " 4: e4 00 40\n"
368  " 4: b4 7a 00\n"
369  " 4: b4 7d 00\n"
370  " 4: b4 7f 00\n"
371  " 4: b4 65 00\n"
372  " 4: b4 64 00\n"
373  " 4: b4 06 02\n"
374  " 4: b4 26 00\n"
375  " 5: e5 00 40\n"
376  " 5: b5 7a 00\n"
377  " 5: b5 7d 00\n"
378  " 5: b5 7f 00\n"
379  " 5: b5 65 00\n"
380  " 5: b5 64 00\n"
381  " 5: b5 06 02\n"
382  " 5: b5 26 00\n"
383  " 6: e6 00 40\n"
384  " 6: b6 7a 00\n"
385  " 6: b6 7d 00\n"
386  " 6: b6 7f 00\n"
387  " 6: b6 65 00\n"
388  " 6: b6 64 00\n"
389  " 6: b6 06 02\n"
390  " 6: b6 26 00\n"
391  " 7: e7 00 40\n"
392  " 7: b7 7a 00\n"
393  " 7: b7 7d 00\n"
394  " 7: b7 7f 00\n"
395  " 7: b7 65 00\n"
396  " 7: b7 64 00\n"
397  " 7: b7 06 02\n"
398  " 7: b7 26 00\n"
399  " 8: e8 00 40\n"
400  " 8: b8 7a 00\n"
401  " 8: b8 7d 00\n"
402  " 8: b8 7f 00\n"
403  " 8: b8 65 00\n"
404  " 8: b8 64 00\n"
405  " 8: b8 06 02\n"
406  " 8: b8 26 00\n"
407  " 9: e9 00 40\n"
408  " 9: b9 7a 00\n"
409  " 9: b9 7d 00\n"
410  " 9: b9 7f 00\n"
411  " 9: b9 65 00\n"
412  " 9: b9 64 00\n"
413  " 9: b9 06 02\n"
414  " 9: b9 26 00\n"
415  " 10: ea 00 40\n"
416  " 10: ba 7a 00\n"
417  " 10: ba 7d 00\n"
418  " 10: ba 7f 00\n"
419  " 10: ba 65 00\n"
420  " 10: ba 64 00\n"
421  " 10: ba 06 02\n"
422  " 10: ba 26 00\n"
423  " 11: eb 00 40\n"
424  " 11: bb 7a 00\n"
425  " 11: bb 7d 00\n"
426  " 11: bb 7f 00\n"
427  " 11: bb 65 00\n"
428  " 11: bb 64 00\n"
429  " 11: bb 06 02\n"
430  " 11: bb 26 00\n"
431  " 12: ec 00 40\n"
432  " 12: bc 7a 00\n"
433  " 12: bc 7d 00\n"
434  " 12: bc 7f 00\n"
435  " 12: bc 65 00\n"
436  " 12: bc 64 00\n"
437  " 12: bc 06 02\n"
438  " 12: bc 26 00\n"
439  " 13: ed 00 40\n"
440  " 13: bd 7a 00\n"
441  " 13: bd 7d 00\n"
442  " 13: bd 7f 00\n"
443  " 13: bd 65 00\n"
444  " 13: bd 64 00\n"
445  " 13: bd 06 02\n"
446  " 13: bd 26 00\n"
447  " 14: ee 00 40\n"
448  " 14: be 7a 00\n"
449  " 14: be 7d 00\n"
450  " 14: be 7f 00\n"
451  " 14: be 65 00\n"
452  " 14: be 64 00\n"
453  " 14: be 06 02\n"
454  " 14: be 26 00\n"
455  " 15: ef 00 40\n"
456  " 15: bf 7a 00\n"
457  " 15: bf 7d 00\n"
458  " 15: bf 7f 00\n"
459  " 15: bf 65 00\n"
460  " 15: bf 64 00\n"
461  " 15: bf 06 02\n"
462  " 15: bf 26 00\n"), __LINE__, (__FILE__)) );
463 
464  /* check all permutations */
465 
466  DEBUGLOG (midiio, "123" );
467 
468  out->NoteOn(box,56,96,route.get(),0,cd);
469  CPPUNIT_ASSERT( out->Check((" 0: 90 38 60\n"), __LINE__, (__FILE__)) );
470  out->NoteOn(box,60,97,route.get(),0,cd);
471  CPPUNIT_ASSERT( out->Check((" 1: 91 3c 61\n"), __LINE__, (__FILE__)) );
472  out->NoteOn(box,63,98,route.get(),0,cd);
473  CPPUNIT_ASSERT( out->Check((" 2: 92 3f 62\n"), __LINE__, (__FILE__)) );
474 
475  out->NoteOn(box,56,96,route.get(),0,cd);
476  CPPUNIT_ASSERT( out->Check((" 3: 93 38 60\n"), __LINE__, (__FILE__)) );
477  out->NoteOn(box,60,97,route.get(),0,cd);
478  CPPUNIT_ASSERT( out->Check((" 4: 94 3c 61\n"), __LINE__, (__FILE__)) );
479  out->NoteOn(box,63,98,route.get(),0,cd);
480  CPPUNIT_ASSERT( out->Check((" 5: 95 3f 62\n"), __LINE__, (__FILE__)) );
481 
482  out->NoteOn(box,56,96,route.get(),0,cd);
483  CPPUNIT_ASSERT( out->Check((" 6: 96 38 60\n"), __LINE__, (__FILE__)) );
484  out->NoteOn(box,60,97,route.get(),0,cd);
485  CPPUNIT_ASSERT( out->Check((" 7: 97 3c 61\n"), __LINE__, (__FILE__)) );
486  out->NoteOn(box,63,98,route.get(),0,cd);
487  CPPUNIT_ASSERT( out->Check((" 8: 98 3f 62\n"), __LINE__, (__FILE__)) );
488 
489  out->NoteOn(box,56,96,route.get(),0,cd);
490  CPPUNIT_ASSERT( out->Check((" 10: 9a 38 60\n"), __LINE__, (__FILE__)) );
491  out->NoteOn(box,60,97,route.get(),0,cd);
492  CPPUNIT_ASSERT( out->Check((" 11: 9b 3c 61\n"), __LINE__, (__FILE__)) );
493  out->NoteOn(box,63,98,route.get(),0,cd);
494  CPPUNIT_ASSERT( out->Check((" 12: 9c 3f 62\n"), __LINE__, (__FILE__)) );
495 
496  out->NoteOn(box,56,96,route.get(),0,cd);
497  CPPUNIT_ASSERT( out->Check((" 13: 9d 38 60\n"), __LINE__, (__FILE__)) );
498  out->NoteOn(box,60,97,route.get(),0,cd);
499  CPPUNIT_ASSERT( out->Check((" 14: 9e 3c 61\n"), __LINE__, (__FILE__)) );
500  out->NoteOn(box,63,98,route.get(),0,cd);
501  CPPUNIT_ASSERT( out->Check((" 15: 9f 3f 62\n"), __LINE__, (__FILE__)) );
502 
503 
504  out->NoteOn(box,64,99,route.get(),0,cd);
505  CPPUNIT_ASSERT( out->Check((" 0: 80 38 40\n 0: 90 40 63\n"), __LINE__, (__FILE__)) );
506  out->NoteOn(box,65,100,route.get(),0,cd);
507  CPPUNIT_ASSERT( out->Check((" 3: 83 38 40\n 3: 93 41 64\n"), __LINE__, (__FILE__)) );
508  out->NoteOn(box,66,101,route.get(),0,cd);
509  CPPUNIT_ASSERT( out->Check((" 6: 86 38 40\n 6: 96 42 65\n"), __LINE__, (__FILE__)) );
510 
511  out->NoteOn(box,67,102,route.get(),0,cd);
512  CPPUNIT_ASSERT( out->Check((" 10: 8a 38 40\n 10: 9a 43 66\n"), __LINE__, (__FILE__)) );
513  out->NoteOn(box,68,103,route.get(),0,cd);
514  CPPUNIT_ASSERT( out->Check((" 1: 81 3c 40\n 1: 91 44 67\n"), __LINE__, (__FILE__)) );
515  out->NoteOn(box,69,104,route.get(),0,cd);
516  CPPUNIT_ASSERT( out->Check((" 4: 84 3c 40\n 4: 94 45 68\n"), __LINE__, (__FILE__)) );
517 
518  out->NoteOn(box,70,105,route.get(),0,cd);
519  CPPUNIT_ASSERT( out->Check((" 7: 87 3c 40\n 7: 97 46 69\n"), __LINE__, (__FILE__)) );
520  out->NoteOn(box,71,106,route.get(),0,cd);
521  CPPUNIT_ASSERT( out->Check((" 11: 8b 3c 40\n 11: 9b 47 6a\n"), __LINE__, (__FILE__)) );
522  out->NoteOn(box,72,107,route.get(),0,cd);
523  CPPUNIT_ASSERT( out->Check((" 14: 8e 3c 40\n 14: 9e 48 6b\n"), __LINE__, (__FILE__)) );
524 
525  out->NoteOn(box,73,108,route.get(),0,cd);
526  CPPUNIT_ASSERT( out->Check((" 2: 82 3f 40\n 2: 92 49 6c\n"), __LINE__, (__FILE__)) );
527  out->NoteOn(box,74,109,route.get(),0,cd);
528  CPPUNIT_ASSERT( out->Check((" 5: 85 3f 40\n 5: 95 4a 6d\n"), __LINE__, (__FILE__)) );
529  out->NoteOn(box,75,110,route.get(),0,cd);
530  CPPUNIT_ASSERT( out->Check((" 8: 88 3f 40\n 8: 98 4b 6e\n"), __LINE__, (__FILE__)) );
531 
532  out->NoteOn(box,76,111,route.get(),0,cd);
533  CPPUNIT_ASSERT( out->Check((" 0: 80 40 40\n 0: 90 4c 6f\n"), __LINE__, (__FILE__)) );
534  out->NoteOn(box,77,112,route.get(),0,cd);
535  CPPUNIT_ASSERT( out->Check((" 3: 83 41 40\n 3: 93 4d 70\n"), __LINE__, (__FILE__)) );
536  out->NoteOn(box,78,113,route.get(),0,cd);
537  CPPUNIT_ASSERT( out->Check((" 6: 86 42 40\n 6: 96 4e 71\n"), __LINE__, (__FILE__)) );
538 
539  out->Close();
540  CPPUNIT_ASSERT( out->Check((" 12: 8c 3f 40\n 13: 8d 38 40\n 15: 8f 3f 40\n 10: 8a 43 40\n 1: 81 44 40\n 4: 84 45 40\n 7: 87 46 40\n 11: 8b 47 40\n 14: 8e 48 40\n 2: 82 49 40\n 5: 85 4a 40\n 8: 88 4b 40\n 0: 80 4c 40\n 3: 83 4d 40\n 6: 86 4e 40\n...closed.\n"), __LINE__, (__FILE__)) );
541 }
#define DEBUGLOG(level,...)
Definition: debug.h:240
mutabor::Route route
Definition: midicmnTest.h:133
midicmnOutputDevice * out
Definition: midicmnTest.h:132
mutabor::Box box
Definition: midicmnTest.h:134
bool Check(std::string s, int line=-1, std::string filename=(__FILE__))
Definition: midicmnTest.h:88
mutabor::ChannelData cd
Definition: midicmnTest.h:135
void NoteOn(Box box, int taste, int velo, RouteClass *r, size_t id, const ChannelData &input_channel_data)
Definition: Device.h:849
void CommonMidiOutputTest::testNoteOnOff ( )

Definiert in Zeile 83 der Datei midicmnTest.cpp.

Benutzt CommonMidiOutputTest::box, CommonMidiOutputTest::cd, midicmnOutputDevice::Check(), mutabor::CommonMidiOutput< T, D >::Close(), DEBUGLOG, midicmnOutputDevice::getOut(), mutabor::OutputDeviceClass::NoteOff(), mutabor::OutputDeviceClass::NoteOn(), mutabor::OutputDeviceClass::Open(), CommonMidiOutputTest::out, CommonMidiOutputTest::route und mutabor::str().

84 {
85  CPPUNIT_ASSERT( out );
86  CPPUNIT_ASSERT(out->Open());
87  if (!box->Compile(NULL, "")) {
88  CPPUNIT_FAIL(box->get_errors());
89  }
90  CPPUNIT_ASSERT(box->Open());
91  CPPUNIT_ASSERT( out->Check(("Opened...\n"
92  " 0: e0 00 40\n"
93  " 0: b0 7a 00\n"
94  " 0: b0 7d 00\n"
95  " 0: b0 7f 00\n"
96  " 0: b0 65 00\n"
97  " 0: b0 64 00\n"
98  " 0: b0 06 02\n"
99  " 0: b0 26 00\n"
100  " 1: e1 00 40\n"
101  " 1: b1 7a 00\n"
102  " 1: b1 7d 00\n"
103  " 1: b1 7f 00\n"
104  " 1: b1 65 00\n"
105  " 1: b1 64 00\n"
106  " 1: b1 06 02\n"
107  " 1: b1 26 00\n"
108  " 2: e2 00 40\n"
109  " 2: b2 7a 00\n"
110  " 2: b2 7d 00\n"
111  " 2: b2 7f 00\n"
112  " 2: b2 65 00\n"
113  " 2: b2 64 00\n"
114  " 2: b2 06 02\n"
115  " 2: b2 26 00\n"
116  " 3: e3 00 40\n"
117  " 3: b3 7a 00\n"
118  " 3: b3 7d 00\n"
119  " 3: b3 7f 00\n"
120  " 3: b3 65 00\n"
121  " 3: b3 64 00\n"
122  " 3: b3 06 02\n"
123  " 3: b3 26 00\n"
124  " 4: e4 00 40\n"
125  " 4: b4 7a 00\n"
126  " 4: b4 7d 00\n"
127  " 4: b4 7f 00\n"
128  " 4: b4 65 00\n"
129  " 4: b4 64 00\n"
130  " 4: b4 06 02\n"
131  " 4: b4 26 00\n"
132  " 5: e5 00 40\n"
133  " 5: b5 7a 00\n"
134  " 5: b5 7d 00\n"
135  " 5: b5 7f 00\n"
136  " 5: b5 65 00\n"
137  " 5: b5 64 00\n"
138  " 5: b5 06 02\n"
139  " 5: b5 26 00\n"
140  " 6: e6 00 40\n"
141  " 6: b6 7a 00\n"
142  " 6: b6 7d 00\n"
143  " 6: b6 7f 00\n"
144  " 6: b6 65 00\n"
145  " 6: b6 64 00\n"
146  " 6: b6 06 02\n"
147  " 6: b6 26 00\n"
148  " 7: e7 00 40\n"
149  " 7: b7 7a 00\n"
150  " 7: b7 7d 00\n"
151  " 7: b7 7f 00\n"
152  " 7: b7 65 00\n"
153  " 7: b7 64 00\n"
154  " 7: b7 06 02\n"
155  " 7: b7 26 00\n"
156  " 8: e8 00 40\n"
157  " 8: b8 7a 00\n"
158  " 8: b8 7d 00\n"
159  " 8: b8 7f 00\n"
160  " 8: b8 65 00\n"
161  " 8: b8 64 00\n"
162  " 8: b8 06 02\n"
163  " 8: b8 26 00\n"
164  " 9: e9 00 40\n"
165  " 9: b9 7a 00\n"
166  " 9: b9 7d 00\n"
167  " 9: b9 7f 00\n"
168  " 9: b9 65 00\n"
169  " 9: b9 64 00\n"
170  " 9: b9 06 02\n"
171  " 9: b9 26 00\n"
172  " 10: ea 00 40\n"
173  " 10: ba 7a 00\n"
174  " 10: ba 7d 00\n"
175  " 10: ba 7f 00\n"
176  " 10: ba 65 00\n"
177  " 10: ba 64 00\n"
178  " 10: ba 06 02\n"
179  " 10: ba 26 00\n"
180  " 11: eb 00 40\n"
181  " 11: bb 7a 00\n"
182  " 11: bb 7d 00\n"
183  " 11: bb 7f 00\n"
184  " 11: bb 65 00\n"
185  " 11: bb 64 00\n"
186  " 11: bb 06 02\n"
187  " 11: bb 26 00\n"
188  " 12: ec 00 40\n"
189  " 12: bc 7a 00\n"
190  " 12: bc 7d 00\n"
191  " 12: bc 7f 00\n"
192  " 12: bc 65 00\n"
193  " 12: bc 64 00\n"
194  " 12: bc 06 02\n"
195  " 12: bc 26 00\n"
196  " 13: ed 00 40\n"
197  " 13: bd 7a 00\n"
198  " 13: bd 7d 00\n"
199  " 13: bd 7f 00\n"
200  " 13: bd 65 00\n"
201  " 13: bd 64 00\n"
202  " 13: bd 06 02\n"
203  " 13: bd 26 00\n"
204  " 14: ee 00 40\n"
205  " 14: be 7a 00\n"
206  " 14: be 7d 00\n"
207  " 14: be 7f 00\n"
208  " 14: be 65 00\n"
209  " 14: be 64 00\n"
210  " 14: be 06 02\n"
211  " 14: be 26 00\n"
212  " 15: ef 00 40\n"
213  " 15: bf 7a 00\n"
214  " 15: bf 7d 00\n"
215  " 15: bf 7f 00\n"
216  " 15: bf 65 00\n"
217  " 15: bf 64 00\n"
218  " 15: bf 06 02\n"
219  " 15: bf 26 00\n"), __LINE__, (__FILE__)) );
220 
221  /* check all permutations */
222 
223  DEBUGLOG (midiio, "123" );
224 
225  out->NoteOn(box,56,96,route.get(),0,cd);
226  CPPUNIT_ASSERT( out->Check((" 0: 90 38 60\n"), __LINE__, (__FILE__) ) );
227  out->NoteOn(box,60,97,route.get(),0,cd);
228  CPPUNIT_ASSERT( out->Check((" 1: 91 3c 61\n"), __LINE__, (__FILE__) ) );
229  out->NoteOn(box,63,98,route.get(),0,cd);
230  CPPUNIT_ASSERT( out->Check((" 2: 92 3f 62\n"), __LINE__, (__FILE__) ) );
231 
232  out->NoteOff(box,56,53,route.get(),0,false);
233  CPPUNIT_ASSERT( out->Check((" 0: 80 38 35\n"), __LINE__, (__FILE__)) );
234  out->NoteOff(box,60,54,route.get(),0,false);
235  CPPUNIT_ASSERT( out->Check((" 1: 81 3c 36\n"), __LINE__, (__FILE__)) );
236  out->NoteOff(box,63,55,route.get(),0,false);
237  CPPUNIT_ASSERT( out->Check((" 2: 82 3f 37\n"), __LINE__, (__FILE__)) );
238 
239  DEBUGLOG (midiio, "132" );
240 
241  out->NoteOn(box,56,96,route.get(),0,cd);
242  CPPUNIT_ASSERT( out->Check((" 3: 93 38 60\n"), __LINE__, (__FILE__) ) );
243  out->NoteOn(box,60,97,route.get(),0,cd);
244  CPPUNIT_ASSERT( out->Check((" 4: 94 3c 61\n"), __LINE__, (__FILE__) ) );
245  out->NoteOn(box,63,98,route.get(),0,cd);
246  CPPUNIT_ASSERT( out->Check((" 5: 95 3f 62\n"), __LINE__, (__FILE__) ) );
247 
248  out->NoteOff(box,56,53,route.get(),0,false);
249  CPPUNIT_ASSERT( out->Check((" 3: 83 38 35\n"), __LINE__, (__FILE__)) );
250  out->NoteOff(box,63,55,route.get(),0,false);
251  CPPUNIT_ASSERT( out->Check((" 5: 85 3f 37\n"), __LINE__, (__FILE__)) );
252  out->NoteOff(box,60,54,route.get(),0,false);
253  CPPUNIT_ASSERT( out->Check((" 4: 84 3c 36\n"), __LINE__, (__FILE__)) );
254 
255  DEBUGLOG (midiio, "213" );
256 
257  out->NoteOn(box,56,96,route.get(),0,cd);
258  CPPUNIT_ASSERT( out->Check((" 6: 96 38 60\n"), __LINE__, (__FILE__) ) );
259  out->NoteOn(box,60,97,route.get(),0,cd);
260  CPPUNIT_ASSERT( out->Check((" 7: 97 3c 61\n"), __LINE__, (__FILE__) ) );
261  out->NoteOn(box,63,98,route.get(),0,cd);
262  CPPUNIT_ASSERT( out->Check((" 8: 98 3f 62\n"), __LINE__, (__FILE__) ) );
263 
264  out->NoteOff(box,60,54,route.get(),0,false);
265  CPPUNIT_ASSERT( out->Check((" 7: 87 3c 36\n"), __LINE__, (__FILE__)) );
266  out->NoteOff(box,56,53,route.get(),0,false);
267  CPPUNIT_ASSERT( out->Check((" 6: 86 38 35\n"), __LINE__, (__FILE__)) );
268  out->NoteOff(box,63,55,route.get(),0,false);
269  CPPUNIT_ASSERT( out->Check((" 8: 88 3f 37\n"), __LINE__, (__FILE__)) );
270 
271  DEBUGLOG (midiio, "231" );
272 
273  out->NoteOn(box,56,96,route.get(),0,cd);
274  CPPUNIT_ASSERT( out->Check((" 10: 9a 38 60\n"), __LINE__, (__FILE__) ) );
275  out->NoteOn(box,60,97,route.get(),0,cd);
276  CPPUNIT_ASSERT( out->Check((" 11: 9b 3c 61\n"), __LINE__, (__FILE__) ) );
277  out->NoteOn(box,63,98,route.get(),0,cd);
278  CPPUNIT_ASSERT( out->Check((" 12: 9c 3f 62\n"), __LINE__, (__FILE__) ) );
279 
280  out->NoteOff(box,60,54,route.get(),0,false);
281  CPPUNIT_ASSERT( out->Check((" 11: 8b 3c 36\n"), __LINE__, (__FILE__)) );
282  out->NoteOff(box,63,55,route.get(),0,false);
283  CPPUNIT_ASSERT( out->Check((" 12: 8c 3f 37\n"), __LINE__, (__FILE__)) );
284  out->NoteOff(box,56,53,route.get(),0,false);
285  CPPUNIT_ASSERT( out->Check((" 10: 8a 38 35\n"), __LINE__, (__FILE__)) );
286 
287  DEBUGLOG (midiio, "312" );
288 
289  out->NoteOn(box,56,96,route.get(),0,cd);
290  CPPUNIT_ASSERT( out->Check((" 13: 9d 38 60\n"), __LINE__, (__FILE__) ) );
291  out->NoteOn(box,60,97,route.get(),0,cd);
292  CPPUNIT_ASSERT( out->Check((" 14: 9e 3c 61\n"), __LINE__, (__FILE__) ) );
293  out->NoteOn(box,63,98,route.get(),0,cd);
294  CPPUNIT_ASSERT( out->Check((" 15: 9f 3f 62\n"), __LINE__, (__FILE__) ) );
295 
296  out->NoteOff(box,63,55,route.get(),0,false);
297  CPPUNIT_ASSERT( out->Check((" 15: 8f 3f 37\n"), __LINE__, (__FILE__)) );
298  // check sending note on with velocity = 0
299  out->NoteOff(box,56,53,route.get(),0,true);
300  CPPUNIT_ASSERT( out->Check((" 13: 9d 38 00\n"), __LINE__, (__FILE__)) );
301  out->NoteOff(box,60,54,route.get(),0,false);
302  CPPUNIT_ASSERT( out->Check((" 14: 8e 3c 36\n"), __LINE__, (__FILE__)) );
303 
304  DEBUGLOG (midiio, "321" );
305 
306  // Add check for NULL as tone system parameter
307  out->NoteOn(NULL,56,96,route.get(),0,cd);
308  CPPUNIT_ASSERT( out->Check((" 0: 90 38 60\n"), __LINE__, (__FILE__) ) );
309  out->NoteOn(NULL,60,97,route.get(),0,cd);
310  CPPUNIT_ASSERT( out->Check((" 1: 91 3c 61\n"), __LINE__, (__FILE__) ) );
311  out->NoteOn(NULL,63,98,route.get(),0,cd);
312  CPPUNIT_ASSERT( out->Check((" 2: 92 3f 62\n"), __LINE__, (__FILE__) ) );
313 
314  out->NoteOff(NULL,63,55,route.get(),0,false);
315  CPPUNIT_ASSERT( out->Check((" 2: 82 3f 37\n"), __LINE__, (__FILE__)) );
316  out->NoteOff(NULL,60,54,route.get(),0,false);
317  CPPUNIT_ASSERT( out->Check((" 1: 81 3c 36\n"), __LINE__, (__FILE__)) );
318  out->NoteOff(NULL,56,53,route.get(),0,false);
319  CPPUNIT_ASSERT( out->Check((" 0: 80 38 35\n"), __LINE__, (__FILE__)) );
320 
321 
322 
323 
324  out->Close();
325  DEBUGLOG (midiio, "|%s|" , str(out->getOut()));
326  CPPUNIT_ASSERT( out->Check(("...closed.\n")) );
327 }
#define DEBUGLOG(level,...)
Definition: debug.h:240
std::string str(T obj)
Definition: Defs.h:110
void NoteOff(Box box, int taste, int velo, RouteClass *r, size_t id, bool is_note_on)
Definition: Device.h:859
mutabor::Route route
Definition: midicmnTest.h:133
mutabor::DebugMidiOutputProvider & getOut()
Definition: midicmnTest.h:78
midicmnOutputDevice * out
Definition: midicmnTest.h:132
mutabor::Box box
Definition: midicmnTest.h:134
bool Check(std::string s, int line=-1, std::string filename=(__FILE__))
Definition: midicmnTest.h:88
mutabor::ChannelData cd
Definition: midicmnTest.h:135
void NoteOn(Box box, int taste, int velo, RouteClass *r, size_t id, const ChannelData &input_channel_data)
Definition: Device.h:849
void OutputMidiFileTest::testNoteOnOff ( )

Definiert in Zeile 4859 der Datei DevMidFTest.cpp.

Benutzt OutputMidiFileTest::box, OutputMidiFileTest::cd, mutabor::OutputMidiFile::Close(), DEBUGLOG, mutabor::OutputDeviceClass::NoteOff(), mutabor::OutputDeviceClass::NoteOn(), mutabor::OutputDeviceClass::Open(), OutputMidiFileTest::out und OutputMidiFileTest::route.

4860 {
4861  CPPUNIT_ASSERT( out );
4862  out->Open();
4863 /*
4864  CPPUNIT_ASSERT( out->Check(("Opened...\n"
4865  " 0: e0 00 40\n"
4866  " 0: b0 7a 00\n"
4867  " 0: b0 7d 00\n"
4868  " 0: b0 7f 00\n"
4869  " 1: e1 00 40\n"
4870  " 1: b1 7a 00\n"
4871  " 1: b1 7d 00\n"
4872  " 1: b1 7f 00\n"
4873  " 2: e2 00 40\n"
4874  " 2: b2 7a 00\n"
4875  " 2: b2 7d 00\n"
4876  " 2: b2 7f 00\n"
4877  " 3: e3 00 40\n"
4878  " 3: b3 7a 00\n"
4879  " 3: b3 7d 00\n"
4880  " 3: b3 7f 00\n"
4881  " 4: e4 00 40\n"
4882  " 4: b4 7a 00\n"
4883  " 4: b4 7d 00\n"
4884  " 4: b4 7f 00\n"
4885  " 5: e5 00 40\n"
4886  " 5: b5 7a 00\n"
4887  " 5: b5 7d 00\n"
4888  " 5: b5 7f 00\n"
4889  " 6: e6 00 40\n"
4890  " 6: b6 7a 00\n"
4891  " 6: b6 7d 00\n"
4892  " 6: b6 7f 00\n"
4893  " 7: e7 00 40\n"
4894  " 7: b7 7a 00\n"
4895  " 7: b7 7d 00\n"
4896  " 7: b7 7f 00\n"
4897  " 8: e8 00 40\n"
4898  " 8: b8 7a 00\n"
4899  " 8: b8 7d 00\n"
4900  " 8: b8 7f 00\n"
4901  " 9: e9 00 40\n"
4902  " 9: b9 7a 00\n"
4903  " 9: b9 7d 00\n"
4904  " 9: b9 7f 00\n"
4905  " 10: ea 00 40\n"
4906  " 10: ba 7a 00\n"
4907  " 10: ba 7d 00\n"
4908  " 10: ba 7f 00\n"
4909  " 11: eb 00 40\n"
4910  " 11: bb 7a 00\n"
4911  " 11: bb 7d 00\n"
4912  " 11: bb 7f 00\n"
4913  " 12: ec 00 40\n"
4914  " 12: bc 7a 00\n"
4915  " 12: bc 7d 00\n"
4916  " 12: bc 7f 00\n"
4917  " 13: ed 00 40\n"
4918  " 13: bd 7a 00\n"
4919  " 13: bd 7d 00\n"
4920  " 13: bd 7f 00\n"
4921  " 14: ee 00 40\n"
4922  " 14: be 7a 00\n"
4923  " 14: be 7d 00\n"
4924  " 14: be 7f 00\n"
4925  " 15: ef 00 40\n"
4926  " 15: bf 7a 00\n"
4927  " 15: bf 7d 00\n"
4928  " 15: bf 7f 00\n")) );
4929 */
4930  /* check all permutations */
4931 
4932  DEBUGLOG (midiio, "123" );
4933 
4934  out->NoteOn(box,56,96,route.get(),0,cd);
4935 // CPPUNIT_ASSERT( out->Check((" 0: b0 40 00\n 0: 90 38 60\n") ) );
4936  out->NoteOn(box,60,97,route.get(),0,cd);
4937 // CPPUNIT_ASSERT( out->Check((" 1: b1 40 00\n 1: 91 3c 61\n") ) );
4938  out->NoteOn(box,63,98,route.get(),0,cd);
4939 // CPPUNIT_ASSERT( out->Check((" 2: b2 40 00\n 2: 92 3f 62\n") ) );
4940 
4941  usleep(200000);
4942  out->NoteOff(box,56,53,route.get(),0,false);
4943 // CPPUNIT_ASSERT( out->Check((" 0: 80 38 35\n")) );
4944  out->NoteOff(box,60,54,route.get(),0,false);
4945 // CPPUNIT_ASSERT( out->Check((" 1: 81 3c 36\n")) );
4946  out->NoteOff(box,63,55,route.get(),0,false);
4947 // CPPUNIT_ASSERT( out->Check((" 2: 82 3f 37\n")) );
4948 
4949  usleep(200000);
4950  DEBUGLOG (midiio, "132" );
4951 
4952  out->NoteOn(box,56,96,route.get(),0,cd);
4953 // CPPUNIT_ASSERT( out->Check((" 3: b3 40 00\n 3: 93 38 60\n") ) );
4954  out->NoteOn(box,60,97,route.get(),0,cd);
4955 // CPPUNIT_ASSERT( out->Check((" 4: b4 40 00\n 4: 94 3c 61\n") ) );
4956  out->NoteOn(box,63,98,route.get(),0,cd);
4957 // CPPUNIT_ASSERT( out->Check((" 5: b5 40 00\n 5: 95 3f 62\n") ) );
4958 
4959  usleep(200000);
4960  out->NoteOff(box,56,53,route.get(),0,false);
4961 // CPPUNIT_ASSERT( out->Check((" 3: 83 38 35\n")) );
4962  out->NoteOff(box,63,55,route.get(),0,false);
4963 // CPPUNIT_ASSERT( out->Check((" 5: 85 3f 37\n")) );
4964  out->NoteOff(box,60,54,route.get(),0,false);
4965 // CPPUNIT_ASSERT( out->Check((" 4: 84 3c 36\n")) );
4966 
4967  DEBUGLOG (midiio, "213" );
4968 
4969  usleep(200000);
4970  out->NoteOn(box,56,96,route.get(),0,cd);
4971 // CPPUNIT_ASSERT( out->Check((" 6: b6 40 00\n 6: 96 38 60\n") ) );
4972  out->NoteOn(box,60,97,route.get(),0,cd);
4973 // CPPUNIT_ASSERT( out->Check((" 7: b7 40 00\n 7: 97 3c 61\n") ) );
4974  out->NoteOn(box,63,98,route.get(),0,cd);
4975 // CPPUNIT_ASSERT( out->Check((" 8: b8 40 00\n 8: 98 3f 62\n") ) );
4976 
4977  out->NoteOff(box,60,54,route.get(),0,false);
4978 // CPPUNIT_ASSERT( out->Check((" 7: 87 3c 36\n")) );
4979  out->NoteOff(box,56,53,route.get(),0,false);
4980 // CPPUNIT_ASSERT( out->Check((" 6: 86 38 35\n")) );
4981  out->NoteOff(box,63,55,route.get(),0,false);
4982 // CPPUNIT_ASSERT( out->Check((" 8: 88 3f 37\n")) );
4983 
4984  usleep(200000);
4985  DEBUGLOG (midiio, "231" );
4986 
4987  out->NoteOn(box,56,96,route.get(),0,cd);
4988 // CPPUNIT_ASSERT( out->Check((" 10: ba 40 00\n 10: 9a 38 60\n") ) );
4989  out->NoteOn(box,60,97,route.get(),0,cd);
4990 // CPPUNIT_ASSERT( out->Check((" 11: bb 40 00\n 11: 9b 3c 61\n") ) );
4991  out->NoteOn(box,63,98,route.get(),0,cd);
4992 // CPPUNIT_ASSERT( out->Check((" 12: bc 40 00\n 12: 9c 3f 62\n") ) );
4993 
4994  usleep(200000);
4995  out->NoteOff(box,60,54,route.get(),0,false);
4996 // CPPUNIT_ASSERT( out->Check((" 11: 8b 3c 36\n")) );
4997  out->NoteOff(box,63,55,route.get(),0,false);
4998 // CPPUNIT_ASSERT( out->Check((" 12: 8c 3f 37\n")) );
4999  out->NoteOff(box,56,53,route.get(),0,false);
5000 // CPPUNIT_ASSERT( out->Check((" 10: 8a 38 35\n")) );
5001 
5002  usleep(200000);
5003  DEBUGLOG (midiio, "312" );
5004 
5005  out->NoteOn(box,56,96,route.get(),0,cd);
5006 // CPPUNIT_ASSERT( out->Check((" 13: bd 40 00\n 13: 9d 38 60\n") ) );
5007  out->NoteOn(box,60,97,route.get(),0,cd);
5008 // CPPUNIT_ASSERT( out->Check((" 14: be 40 00\n 14: 9e 3c 61\n") ) );
5009  out->NoteOn(box,63,98,route.get(),0,cd);
5010 // CPPUNIT_ASSERT( out->Check((" 15: bf 40 00\n 15: 9f 3f 62\n") ) );
5011 
5012  usleep(200000);
5013  out->NoteOff(box,63,55,route.get(),0,false);
5014 // CPPUNIT_ASSERT( out->Check((" 15: 8f 3f 37\n")) );
5015  // check sending note on with velocity = 0
5016  out->NoteOff(box,56,53,route.get(),0,true);
5017 // CPPUNIT_ASSERT( out->Check((" 13: 9d 38 00\n")) );
5018  out->NoteOff(box,60,54,route.get(),0,false);
5019 // CPPUNIT_ASSERT( out->Check((" 14: 8e 3c 36\n")) );
5020 
5021  usleep(200000);
5022  DEBUGLOG (midiio, "321" );
5023 
5024  // Add check for NULL as tone system parameter
5025  out->NoteOn(NULL,56,96,route.get(),0,cd);
5026 // CPPUNIT_ASSERT( out->Check((" 0: 90 38 60\n") ) );
5027  out->NoteOn(NULL,60,97,route.get(),0,cd);
5028 // CPPUNIT_ASSERT( out->Check((" 1: 91 3c 61\n") ) );
5029  out->NoteOn(NULL,63,98,route.get(),0,cd);
5030 // CPPUNIT_ASSERT( out->Check((" 2: 92 3f 62\n") ) );
5031 
5032  usleep(200000);
5033  out->NoteOff(NULL,63,55,route.get(),0,false);
5034 // CPPUNIT_ASSERT( out->Check((" 2: 82 3f 37\n")) );
5035  out->NoteOff(NULL,60,54,route.get(),0,false);
5036 // CPPUNIT_ASSERT( out->Check((" 1: 81 3c 36\n")) );
5037  out->NoteOff(NULL,56,53,route.get(),0,false);
5038 // CPPUNIT_ASSERT( out->Check((" 0: 80 38 35\n")) );
5039 
5040 
5041 
5042 
5043  out->Close();
5044 // DEBUGLOG (midiio, "|%s|" ,((std::string)(out->getOut())).c_str());
5045 // CPPUNIT_ASSERT( out->Check(("...closed.\n")) );
5046 }
#define DEBUGLOG(level,...)
Definition: debug.h:240
void NoteOff(Box box, int taste, int velo, RouteClass *r, size_t id, bool is_note_on)
Definition: Device.h:859
virtual void Close()
Definition: DevMidF.cpp:340
mutabor::OutputMidiFile * out
Definition: DevMidFTest.h:239
mutabor::Route route
Definition: DevMidFTest.h:240
mutabor::ChannelData cd
Definition: DevMidFTest.h:242
mutabor::Box box
Definition: DevMidFTest.h:241
void NoteOn(Box box, int taste, int velo, RouteClass *r, size_t id, const ChannelData &input_channel_data)
Definition: Device.h:849
void CommonMidiInputTest::testPanic ( )

Definiert in Zeile 599 der Datei midicmnTest.cpp.

Benutzt CommonMidiInputTest::box, midicmnOutputDevice::Check(), mutabor::CommonMidiOutput< T, D >::Close(), mutabor::InputDeviceClass::Close(), DEBUGLOG, DEFAULT_PANIC, midicmnOutputDevice::getOut(), CommonMidiInputTest::in, midicmnInputDevice::NoteOff(), midicmnInputDevice::NoteOn(), midicmnInputDevice::Open(), mutabor::OutputDeviceClass::Open(), CommonMidiInputTest::out, mutabor::InputDeviceClass::Panic() und mutabor::str().

600 {
601  CPPUNIT_ASSERT( in );
602  out->Open();
603  box->Open();
604  CPPUNIT_ASSERT( out->Check(("Opened...\n"
605  " 0: e0 00 40\n"
606  " 0: b0 7a 00\n"
607  " 0: b0 7d 00\n"
608  " 0: b0 7f 00\n"
609  " 0: b0 65 00\n"
610  " 0: b0 64 00\n"
611  " 0: b0 06 02\n"
612  " 0: b0 26 00\n"
613  " 1: e1 00 40\n"
614  " 1: b1 7a 00\n"
615  " 1: b1 7d 00\n"
616  " 1: b1 7f 00\n"
617  " 1: b1 65 00\n"
618  " 1: b1 64 00\n"
619  " 1: b1 06 02\n"
620  " 1: b1 26 00\n"
621  " 2: e2 00 40\n"
622  " 2: b2 7a 00\n"
623  " 2: b2 7d 00\n"
624  " 2: b2 7f 00\n"
625  " 2: b2 65 00\n"
626  " 2: b2 64 00\n"
627  " 2: b2 06 02\n"
628  " 2: b2 26 00\n"
629  " 3: e3 00 40\n"
630  " 3: b3 7a 00\n"
631  " 3: b3 7d 00\n"
632  " 3: b3 7f 00\n"
633  " 3: b3 65 00\n"
634  " 3: b3 64 00\n"
635  " 3: b3 06 02\n"
636  " 3: b3 26 00\n"
637  " 4: e4 00 40\n"
638  " 4: b4 7a 00\n"
639  " 4: b4 7d 00\n"
640  " 4: b4 7f 00\n"
641  " 4: b4 65 00\n"
642  " 4: b4 64 00\n"
643  " 4: b4 06 02\n"
644  " 4: b4 26 00\n"
645  " 5: e5 00 40\n"
646  " 5: b5 7a 00\n"
647  " 5: b5 7d 00\n"
648  " 5: b5 7f 00\n"
649  " 5: b5 65 00\n"
650  " 5: b5 64 00\n"
651  " 5: b5 06 02\n"
652  " 5: b5 26 00\n"
653  " 6: e6 00 40\n"
654  " 6: b6 7a 00\n"
655  " 6: b6 7d 00\n"
656  " 6: b6 7f 00\n"
657  " 6: b6 65 00\n"
658  " 6: b6 64 00\n"
659  " 6: b6 06 02\n"
660  " 6: b6 26 00\n"
661  " 7: e7 00 40\n"
662  " 7: b7 7a 00\n"
663  " 7: b7 7d 00\n"
664  " 7: b7 7f 00\n"
665  " 7: b7 65 00\n"
666  " 7: b7 64 00\n"
667  " 7: b7 06 02\n"
668  " 7: b7 26 00\n"
669  " 8: e8 00 40\n"
670  " 8: b8 7a 00\n"
671  " 8: b8 7d 00\n"
672  " 8: b8 7f 00\n"
673  " 8: b8 65 00\n"
674  " 8: b8 64 00\n"
675  " 8: b8 06 02\n"
676  " 8: b8 26 00\n"
677  " 9: e9 00 40\n"
678  " 9: b9 7a 00\n"
679  " 9: b9 7d 00\n"
680  " 9: b9 7f 00\n"
681  " 9: b9 65 00\n"
682  " 9: b9 64 00\n"
683  " 9: b9 06 02\n"
684  " 9: b9 26 00\n"
685  " 10: ea 00 40\n"
686  " 10: ba 7a 00\n"
687  " 10: ba 7d 00\n"
688  " 10: ba 7f 00\n"
689  " 10: ba 65 00\n"
690  " 10: ba 64 00\n"
691  " 10: ba 06 02\n"
692  " 10: ba 26 00\n"
693  " 11: eb 00 40\n"
694  " 11: bb 7a 00\n"
695  " 11: bb 7d 00\n"
696  " 11: bb 7f 00\n"
697  " 11: bb 65 00\n"
698  " 11: bb 64 00\n"
699  " 11: bb 06 02\n"
700  " 11: bb 26 00\n"
701  " 12: ec 00 40\n"
702  " 12: bc 7a 00\n"
703  " 12: bc 7d 00\n"
704  " 12: bc 7f 00\n"
705  " 12: bc 65 00\n"
706  " 12: bc 64 00\n"
707  " 12: bc 06 02\n"
708  " 12: bc 26 00\n"
709  " 13: ed 00 40\n"
710  " 13: bd 7a 00\n"
711  " 13: bd 7d 00\n"
712  " 13: bd 7f 00\n"
713  " 13: bd 65 00\n"
714  " 13: bd 64 00\n"
715  " 13: bd 06 02\n"
716  " 13: bd 26 00\n"
717  " 14: ee 00 40\n"
718  " 14: be 7a 00\n"
719  " 14: be 7d 00\n"
720  " 14: be 7f 00\n"
721  " 14: be 65 00\n"
722  " 14: be 64 00\n"
723  " 14: be 06 02\n"
724  " 14: be 26 00\n"
725  " 15: ef 00 40\n"
726  " 15: bf 7a 00\n"
727  " 15: bf 7d 00\n"
728  " 15: bf 7f 00\n"
729  " 15: bf 65 00\n"
730  " 15: bf 64 00\n"
731  " 15: bf 06 02\n"
732  " 15: bf 26 00\n"), __LINE__, (__FILE__)) );
733  in->Open();
734 
735  /* check all permutations */
736 
737  DEBUGLOG (midiio, "123" );
738 
739  in->NoteOn(0,56,96);
740  CPPUNIT_ASSERT( out->Check((" 0: 90 38 60\n"), __LINE__, (__FILE__) ) );
741  in->NoteOn(0,60,97);
742  CPPUNIT_ASSERT( out->Check((" 1: 91 3c 61\n"), __LINE__, (__FILE__) ) );
743  in->NoteOn(0,63,98);
744  CPPUNIT_ASSERT( out->Check((" 2: 92 3f 62\n"), __LINE__, (__FILE__) ) );
745 
746  in->NoteOff(0,56,53);
747  CPPUNIT_ASSERT( out->Check((" 0: 80 38 35\n"), __LINE__, (__FILE__) ) );
748  in->NoteOff(0,60,54);
749  CPPUNIT_ASSERT( out->Check((" 1: 81 3c 36\n"), __LINE__, (__FILE__) ) );
750  in->NoteOff(0,63,55);
751  CPPUNIT_ASSERT( out->Check((" 2: 82 3f 37\n"), __LINE__, (__FILE__) ) );
752 
753  DEBUGLOG (midiio, "132" );
754 
755  in->NoteOn(0,56,96);
756  CPPUNIT_ASSERT( out->Check((" 3: 93 38 60\n"), __LINE__, (__FILE__) ) );
757  in->NoteOn(0,60,97);
758  CPPUNIT_ASSERT( out->Check((" 4: 94 3c 61\n"), __LINE__, (__FILE__) ) );
759  in->NoteOn(0,63,98);
760  CPPUNIT_ASSERT( out->Check((" 5: 95 3f 62\n"), __LINE__, (__FILE__) ) );
761 
762  in->NoteOff(0,56,53);
763  CPPUNIT_ASSERT( out->Check((" 3: 83 38 35\n"), __LINE__, (__FILE__) ) );
764  in->NoteOff(0,63,55);
765  CPPUNIT_ASSERT( out->Check((" 5: 85 3f 37\n"), __LINE__, (__FILE__) ) );
766  in->NoteOff(0,60,54);
767  CPPUNIT_ASSERT( out->Check((" 4: 84 3c 36\n"), __LINE__, (__FILE__) ) );
768 
769  DEBUGLOG (midiio, "213" );
770 
771  in->NoteOn(0,56,96);
772  CPPUNIT_ASSERT( out->Check((" 6: 96 38 60\n"), __LINE__, (__FILE__) ) );
773  in->NoteOn(0,60,97);
774  CPPUNIT_ASSERT( out->Check((" 7: 97 3c 61\n"), __LINE__, (__FILE__) ) );
775  in->NoteOn(0,63,98);
776  CPPUNIT_ASSERT( out->Check((" 8: 98 3f 62\n"), __LINE__, (__FILE__) ) );
777 
778  in->NoteOff(0,60,54);
779  CPPUNIT_ASSERT( out->Check((" 7: 87 3c 36\n"), __LINE__, (__FILE__) ) );
780  in->NoteOff(0,56,53);
781  CPPUNIT_ASSERT( out->Check((" 6: 86 38 35\n"), __LINE__, (__FILE__) ) );
782  in->NoteOff(0,63,55);
783  CPPUNIT_ASSERT( out->Check((" 8: 88 3f 37\n"), __LINE__, (__FILE__) ) );
784 
785  DEBUGLOG (midiio, "231" );
786 
787  in->NoteOn(0,56,96);
788  CPPUNIT_ASSERT( out->Check((" 10: 9a 38 60\n"), __LINE__, (__FILE__) ) );
789  in->NoteOn(0,60,97);
790  CPPUNIT_ASSERT( out->Check((" 11: 9b 3c 61\n"), __LINE__, (__FILE__) ) );
791  in->NoteOn(0,63,98);
792  CPPUNIT_ASSERT( out->Check((" 12: 9c 3f 62\n"), __LINE__, (__FILE__) ) );
793 
794  in->NoteOff(0,60,54);
795  CPPUNIT_ASSERT( out->Check((" 11: 8b 3c 36\n"), __LINE__, (__FILE__) ) );
796  in->NoteOff(0,63,55);
797  CPPUNIT_ASSERT( out->Check((" 12: 8c 3f 37\n"), __LINE__, (__FILE__) ) );
798  in->NoteOff(0,56,53);
799  CPPUNIT_ASSERT( out->Check((" 10: 8a 38 35\n"), __LINE__, (__FILE__) ) );
800 
801  DEBUGLOG (midiio, "312" );
802 
803  in->NoteOn(0,56,96);
804  CPPUNIT_ASSERT( out->Check((" 13: 9d 38 60\n"), __LINE__, (__FILE__) ) );
805  in->NoteOn(0,60,97);
806  CPPUNIT_ASSERT( out->Check((" 14: 9e 3c 61\n"), __LINE__, (__FILE__) ) );
807  in->NoteOn(0,63,98);
808  CPPUNIT_ASSERT( out->Check((" 15: 9f 3f 62\n"), __LINE__, (__FILE__) ) );
809 
810  in->NoteOff(0,63,55);
811  CPPUNIT_ASSERT( out->Check((" 15: 8f 3f 37\n"), __LINE__, (__FILE__) ) );
812  // check sending note on with velocity = 0
813  in->NoteOff(0,56,53);
814  CPPUNIT_ASSERT( out->Check((" 13: 8d 38 35\n"), __LINE__, (__FILE__) ) );
815  in->NoteOff(0,60,54);
816  CPPUNIT_ASSERT( out->Check((" 14: 8e 3c 36\n"), __LINE__, (__FILE__) ) );
817 
818  DEBUGLOG (midiio, "321" );
819 
820  // Add check for NULL as tone system parameter
821  in->NoteOn(0,56,96);
822  CPPUNIT_ASSERT( out->Check((" 0: 90 38 60\n"), __LINE__, (__FILE__) ) );
823  in->NoteOn(0,60,97);
824  CPPUNIT_ASSERT( out->Check((" 1: 91 3c 61\n"), __LINE__, (__FILE__) ) );
825  in->NoteOn(0,63,98);
826  CPPUNIT_ASSERT( out->Check((" 2: 92 3f 62\n"), __LINE__, (__FILE__) ) );
827 
828  in->NoteOff(0,63,55);
829  CPPUNIT_ASSERT( out->Check((" 2: 82 3f 37\n"), __LINE__, (__FILE__) ) );
830  in->NoteOff(0,60,54);
831  CPPUNIT_ASSERT( out->Check((" 1: 81 3c 36\n"), __LINE__, (__FILE__) ) );
832  in->NoteOff(0,56,53);
833  CPPUNIT_ASSERT( out->Check((" 0: 80 38 35\n"), __LINE__, (__FILE__) ) );
834 
835  // now collect data
836  DEBUGLOG (midiio, "123" );
837  in->NoteOn(0,56,96);
838  CPPUNIT_ASSERT( out->Check((" 3: 93 38 60\n"), __LINE__, (__FILE__) ) );
839  in->NoteOn(0,60,97);
840  CPPUNIT_ASSERT( out->Check((" 5: 95 3c 61\n"), __LINE__, (__FILE__) ) );
841  in->NoteOn(0,63,98);
842  CPPUNIT_ASSERT( out->Check((" 4: 94 3f 62\n"), __LINE__, (__FILE__) ) );
843 
844  DEBUGLOG (midiio, "132" );
845 
846  in->NoteOn(0,56,96);
847  CPPUNIT_ASSERT( out->Check((" 7: 97 38 60\n"), __LINE__, (__FILE__) ) );
848  in->NoteOn(0,60,97);
849  CPPUNIT_ASSERT( out->Check((" 6: 96 3c 61\n"), __LINE__, (__FILE__) ) );
850  in->NoteOn(0,63,98);
851  CPPUNIT_ASSERT( out->Check((" 8: 98 3f 62\n"), __LINE__, (__FILE__) ) );
852 
853  DEBUGLOG (midiio, "213" );
854 
855  in->NoteOn(0,56,96);
856  CPPUNIT_ASSERT( out->Check((" 11: 9b 38 60\n"), __LINE__, (__FILE__) ) );
857  in->NoteOn(0,60,97);
858  CPPUNIT_ASSERT( out->Check((" 12: 9c 3c 61\n"), __LINE__, (__FILE__) ) );
859  in->NoteOn(0,63,98);
860  CPPUNIT_ASSERT( out->Check((" 10: 9a 3f 62\n"), __LINE__, (__FILE__) ) );
861 
862  DEBUGLOG (midiio, "231" );
863 
864  in->NoteOn(0,56,96);
865  CPPUNIT_ASSERT( out->Check((" 15: 9f 38 60\n"), __LINE__, (__FILE__) ) );
866  in->NoteOn(0,60,97);
867  CPPUNIT_ASSERT( out->Check((" 13: 9d 3c 61\n"), __LINE__, (__FILE__) ) );
868  in->NoteOn(0,63,98);
869  CPPUNIT_ASSERT( out->Check((" 14: 9e 3f 62\n"), __LINE__, (__FILE__) ) );
870 
871  DEBUGLOG (midiio, "312" );
872 
873  in->NoteOn(0,56,96);
874  CPPUNIT_ASSERT( out->Check((" 2: 92 38 60\n"), __LINE__, (__FILE__) ) );
875  in->NoteOn(0,60,97);
876  CPPUNIT_ASSERT( out->Check((" 1: 91 3c 61\n"), __LINE__, (__FILE__) ) );
877  in->NoteOn(0,63,98);
878  CPPUNIT_ASSERT( out->Check((" 0: 90 3f 62\n"), __LINE__, (__FILE__) ) );
879 
880  DEBUGLOG (midiio, "321" );
881 
882  // Add check for NULL as tone system parameter
883  in->NoteOn(0,56,96);
884  CPPUNIT_ASSERT( out->Check((" 2: 82 38 40\n 2: 92 38 60\n"), __LINE__, (__FILE__) ) );
885  in->NoteOn(0,60,97);
886  CPPUNIT_ASSERT( out->Check((" 2: 82 38 40\n 2: 92 3c 61\n"), __LINE__, (__FILE__) ) );
887  in->NoteOn(0,63,98);
888  CPPUNIT_ASSERT( out->Check((" 3: 83 38 40\n 3: 93 3f 62\n"), __LINE__, (__FILE__) ) );
889 
890  in->NoteOff(0,56,53);
891  CPPUNIT_ASSERT( out->Check((" 7: 87 38 35\n"), __LINE__, (__FILE__) ) );
892  in->NoteOff(0,60,54);
893  CPPUNIT_ASSERT( out->Check((" 1: 81 3c 36\n"), __LINE__, (__FILE__) ) );
894  in->NoteOff(0,63,55);
895  CPPUNIT_ASSERT( out->Check((" 0: 80 3f 37\n"), __LINE__, (__FILE__) ) );
896 
898  CPPUNIT_ASSERT( out->Check(("\
899  2: b2 40 00\n\
900  3: b3 40 00\n\
901  4: b4 40 00\n\
902  5: b5 40 00\n\
903  6: b6 40 00\n\
904  8: b8 40 00\n\
905  10: ba 40 00\n\
906  11: bb 40 00\n\
907  12: bc 40 00\n\
908  13: bd 40 00\n\
909  14: be 40 00\n\
910  15: bf 40 00\n\
911  2: b2 42 00\n\
912  3: b3 42 00\n\
913  4: b4 42 00\n\
914  5: b5 42 00\n\
915  6: b6 42 00\n\
916  8: b8 42 00\n\
917  10: ba 42 00\n\
918  11: bb 42 00\n\
919  12: bc 42 00\n\
920  13: bd 42 00\n\
921  14: be 42 00\n\
922  15: bf 42 00\n\
923  2: b2 44 00\n\
924  3: b3 44 00\n\
925  4: b4 44 00\n\
926  5: b5 44 00\n\
927  6: b6 44 00\n\
928  8: b8 44 00\n\
929  10: ba 44 00\n\
930  11: bb 44 00\n\
931  12: bc 44 00\n\
932  13: bd 44 00\n\
933  14: be 44 00\n\
934  15: bf 44 00\n\
935  2: b2 45 00\n\
936  3: b3 45 00\n\
937  4: b4 45 00\n\
938  5: b5 45 00\n\
939  6: b6 45 00\n\
940  8: b8 45 00\n\
941  10: ba 45 00\n\
942  11: bb 45 00\n\
943  12: bc 45 00\n\
944  13: bd 45 00\n\
945  14: be 45 00\n\
946  15: bf 45 00\n\
947  3: 83 3f 62\n\
948  4: 84 3f 62\n\
949  8: 88 3f 62\n\
950  10: 8a 3f 62\n\
951  14: 8e 3f 62\n\
952  2: 82 3c 61\n\
953  5: 85 3c 61\n\
954  6: 86 3c 61\n\
955  12: 8c 3c 61\n\
956  13: 8d 3c 61\n\
957  11: 8b 38 60\n\
958  15: 8f 38 60\n\
959 "),
960  __LINE__,
961  (__FILE__) ) );
962 
963  in->NoteOff(0,56,53);
964  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
965  in->NoteOff(0,63,55);
966  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
967  in->NoteOff(0,60,54);
968  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
969 
970  in->NoteOff(0,60,54);
971  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
972  in->NoteOff(0,56,53);
973  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
974  in->NoteOff(0,63,55);
975  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
976 
977  in->NoteOff(0,60,54);
978  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
979  in->NoteOff(0,63,55);
980  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
981  in->NoteOff(0,56,53);
982  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
983 
984  in->NoteOff(0,63,55);
985  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
986  // check sending note on with velocity = 0
987  in->NoteOff(0,56,53);
988  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
989  in->NoteOff(0,60,54);
990  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
991 
992  in->NoteOff(0,63,55);
993  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
994  in->NoteOff(0,60,54);
995  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
996  in->NoteOff(0,56,53);
997  CPPUNIT_ASSERT( out->Check((""), __LINE__, (__FILE__) ) );
998 
999  in->Close();
1000  out->Close();
1001  DEBUGLOG (midiio, "|%s|" , str(out->getOut()));
1002  CPPUNIT_ASSERT( out->Check(("...closed.\n"), __LINE__, (__FILE__) ) );
1003 }
#define DEBUGLOG(level,...)
Definition: debug.h:240
std::string str(T obj)
Definition: Defs.h:110
midicmnInputDevice * in
Definition: midicmnTest.h:211
#define DEFAULT_PANIC
Definition: MidiKern.h:322
mutabor::DebugMidiOutputProvider & getOut()
Definition: midicmnTest.h:78
midicmnOutputDevice * out
Definition: midicmnTest.h:210
void NoteOn(int channel, int inkey, int velocity)
Definition: midicmnTest.h:161
virtual void Close()
Definition: Device.h:1121
bool Check(std::string s, int line=-1, std::string filename=(__FILE__))
Definition: midicmnTest.h:88
void Panic(int type)
reset the device if requested
Definition: Device.cpp:433
void NoteOff(int channel, int inkey, int velocity)
Definition: midicmnTest.h:168
mutabor::Box box
Definition: midicmnTest.h:213
void InputMidiFileTest::testRpnNrpn ( )

Definiert in Zeile 1690 der Datei DevMidFTest.cpp.

Benutzt mutabor::InputDeviceClass::BatchPlay(), mutabor::Box0, midicmnOutputDevice::Check(), mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), InputMidiFileTest::in, mutabor::CommonMidiOutput< T, D >::SetBendingRange() und mutabor::CurrentTimer::UseRealtime().

1691 {
1692 #ifdef DEBUG
1693 // mutabor_debug_flags.timer = true;
1694 // mutabor_debug_flags.midiio = true;
1695 // mutabor_debug_flags.midifile = true;
1696 #endif
1697 
1698  // input device is set up during setUp
1699  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().size() == 1);
1700  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
1701  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
1702  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
1703 
1705  midicmnOutputDevice * out;
1706  mutabor::ScopedBox box(NULL);
1707  mutabor::ScopedRoute route;
1709 
1712  connect(route,box);
1713 
1715  out = new midicmnOutputDevice(("Test"));
1716  out->SetBendingRange(2);
1717  //out = new midicmnOutputDevice(3,("Test"));
1718  guard = out;
1719 
1720  connect(route,guard);
1721  route->SetOutputFrom (0);
1722  route->SetOutputTo (15);
1723  route->OutputAvoidDrumChannel (true);
1724 
1725  connect(route, in);
1726 
1727  CPPUNIT_ASSERT( in );
1728  in -> SetName(SRCDIR "/rpn_nrpn.mid");
1729 
1730 
1731  // First check: Input device provides the correct delta times
1734 
1735 // in -> Play(wxTHREAD_JOINABLE);
1737 
1738  /* controller values:
1739  4: 62 63 06 26: 00 00 0d 25
1740  8: 64 65 06 26: 00 00 07 03
1741  11: 64 65 06 26: 01 00 09 --
1742  13: 62 63 06 26: 00 6f -- 0c
1743  15: 62 63 06 26: 26 6f -- 5d
1744  */
1745 
1746  CPPUNIT_ASSERT(out->Check(("\
1747 0 Opened...\n\
1748 0 0: e0 00 40\n\
1749 0 0: b0 7a 00\n\
1750 0 0: b0 7d 00\n\
1751 0 0: b0 7f 00\n\
1752 0 0: b0 65 00\n\
1753 0 0: b0 64 00\n\
1754 0 0: b0 06 02\n\
1755 0 0: b0 26 00\n\
1756 0 1: e1 00 40\n\
1757 0 1: b1 7a 00\n\
1758 0 1: b1 7d 00\n\
1759 0 1: b1 7f 00\n\
1760 0 1: b1 65 00\n\
1761 0 1: b1 64 00\n\
1762 0 1: b1 06 02\n\
1763 0 1: b1 26 00\n\
1764 0 2: e2 00 40\n\
1765 0 2: b2 7a 00\n\
1766 0 2: b2 7d 00\n\
1767 0 2: b2 7f 00\n\
1768 0 2: b2 65 00\n\
1769 0 2: b2 64 00\n\
1770 0 2: b2 06 02\n\
1771 0 2: b2 26 00\n\
1772 0 3: e3 00 40\n\
1773 0 3: b3 7a 00\n\
1774 0 3: b3 7d 00\n\
1775 0 3: b3 7f 00\n\
1776 0 3: b3 65 00\n\
1777 0 3: b3 64 00\n\
1778 0 3: b3 06 02\n\
1779 0 3: b3 26 00\n\
1780 0 4: e4 00 40\n\
1781 0 4: b4 7a 00\n\
1782 0 4: b4 7d 00\n\
1783 0 4: b4 7f 00\n\
1784 0 4: b4 65 00\n\
1785 0 4: b4 64 00\n\
1786 0 4: b4 06 02\n\
1787 0 4: b4 26 00\n\
1788 0 5: e5 00 40\n\
1789 0 5: b5 7a 00\n\
1790 0 5: b5 7d 00\n\
1791 0 5: b5 7f 00\n\
1792 0 5: b5 65 00\n\
1793 0 5: b5 64 00\n\
1794 0 5: b5 06 02\n\
1795 0 5: b5 26 00\n\
1796 0 6: e6 00 40\n\
1797 0 6: b6 7a 00\n\
1798 0 6: b6 7d 00\n\
1799 0 6: b6 7f 00\n\
1800 0 6: b6 65 00\n\
1801 0 6: b6 64 00\n\
1802 0 6: b6 06 02\n\
1803 0 6: b6 26 00\n\
1804 0 7: e7 00 40\n\
1805 0 7: b7 7a 00\n\
1806 0 7: b7 7d 00\n\
1807 0 7: b7 7f 00\n\
1808 0 7: b7 65 00\n\
1809 0 7: b7 64 00\n\
1810 0 7: b7 06 02\n\
1811 0 7: b7 26 00\n\
1812 0 8: e8 00 40\n\
1813 0 8: b8 7a 00\n\
1814 0 8: b8 7d 00\n\
1815 0 8: b8 7f 00\n\
1816 0 8: b8 65 00\n\
1817 0 8: b8 64 00\n\
1818 0 8: b8 06 02\n\
1819 0 8: b8 26 00\n\
1820 0 9: e9 00 40\n\
1821 0 9: b9 7a 00\n\
1822 0 9: b9 7d 00\n\
1823 0 9: b9 7f 00\n\
1824 0 9: b9 65 00\n\
1825 0 9: b9 64 00\n\
1826 0 9: b9 06 02\n\
1827 0 9: b9 26 00\n\
1828 0 10: ea 00 40\n\
1829 0 10: ba 7a 00\n\
1830 0 10: ba 7d 00\n\
1831 0 10: ba 7f 00\n\
1832 0 10: ba 65 00\n\
1833 0 10: ba 64 00\n\
1834 0 10: ba 06 02\n\
1835 0 10: ba 26 00\n\
1836 0 11: eb 00 40\n\
1837 0 11: bb 7a 00\n\
1838 0 11: bb 7d 00\n\
1839 0 11: bb 7f 00\n\
1840 0 11: bb 65 00\n\
1841 0 11: bb 64 00\n\
1842 0 11: bb 06 02\n\
1843 0 11: bb 26 00\n\
1844 0 12: ec 00 40\n\
1845 0 12: bc 7a 00\n\
1846 0 12: bc 7d 00\n\
1847 0 12: bc 7f 00\n\
1848 0 12: bc 65 00\n\
1849 0 12: bc 64 00\n\
1850 0 12: bc 06 02\n\
1851 0 12: bc 26 00\n\
1852 0 13: ed 00 40\n\
1853 0 13: bd 7a 00\n\
1854 0 13: bd 7d 00\n\
1855 0 13: bd 7f 00\n\
1856 0 13: bd 65 00\n\
1857 0 13: bd 64 00\n\
1858 0 13: bd 06 02\n\
1859 0 13: bd 26 00\n\
1860 0 14: ee 00 40\n\
1861 0 14: be 7a 00\n\
1862 0 14: be 7d 00\n\
1863 0 14: be 7f 00\n\
1864 0 14: be 65 00\n\
1865 0 14: be 64 00\n\
1866 0 14: be 06 02\n\
1867 0 14: be 26 00\n\
1868 0 15: ef 00 40\n\
1869 0 15: bf 7a 00\n\
1870 0 15: bf 7d 00\n\
1871 0 15: bf 7f 00\n\
1872 0 15: bf 65 00\n\
1873 0 15: bf 64 00\n\
1874 0 15: bf 06 02\n\
1875 0 15: bf 26 00\n\
1876 0 0: 90 3c 7f\n\
1877 1 0: b0 62 00\n\
1878 2 0: b0 63 00\n\
1879 3 0: b0 06 0d\n\
1880 4 0: b0 26 25\n\
1881 5 0: b0 64 00\n\
1882 6 0: b0 65 00\n\
1883 7 0: b0 06 02\n\
1884 7 0: b0 26 00\n\
1885 9 0: b0 64 01\n\
1886 11 0: b0 06 09\n\
1887 12 0: b0 63 6f\n\
1888 13 0: b0 26 0c\n\
1889 14 0: b0 62 26\n\
1890 15 0: b0 26 5d\n\
1891 16 1: 91 3d 7f\n\
1892 16 1: b1 63 00\n\
1893 16 1: b1 62 00\n\
1894 16 1: b1 06 0d\n\
1895 16 1: b1 26 25\n\
1896 16 1: b1 64 01\n\
1897 16 1: b1 65 00\n\
1898 16 1: b1 06 09\n\
1899 16 1: b1 63 6f\n\
1900 16 1: b1 26 0c\n\
1901 16 1: b1 62 26\n\
1902 16 1: b1 26 5d\n\
1903 545 0: 80 3c 40\n\
1904 545 1: 81 3d 40\n\
1905 546 ...closed.\n\
1906 "),__LINE__,(__FILE__)));
1907 
1908 }
mutabor::InputDevice in
Definition: DevMidFTest.h:84
static const listtype & GetBoxList()
Definition: Box.h:340
static const routeListType & GetRouteList()
Definition: Route.h:404
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:458
not for headers
Definition: midicmnTest.h:67
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
void SetBendingRange(int br)
Definition: midicmn.h:552
bool Check(std::string s, int line=-1, std::string filename=(__FILE__))
Definition: midicmnTest.h:88
static Box Create(int type, int id=NewBox)
Definition: Box.h:899
static const listtype & GetDeviceList()
Definition: Device.h:752
static bool BatchPlay()
Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex...
Definition: Device.cpp:446
CurrentTimer CurrentTime
Definition: timing.cpp:43
static Route Create()
Creates a generic route.
Definition: Route.h:595
void InputMidiFileTest::testSysEx ( )

Definiert in Zeile 5872 der Datei DevMidFTest.cpp.

Benutzt mutabor::InputDeviceClass::BatchPlay(), mutabor::Box0, midicmnOutputDevice::Check(), mutabor::connect(), mutabor::RouteFactory::Create(), mutabor::BoxFactory::Create(), mutabor::CurrentTime, mutabor::BoxClass::GetBoxList(), mutabor::CommonTypedDeviceAPI< OutputDeviceClass >::GetDeviceList(), mutabor::CommonTypedDeviceAPI< InputDeviceClass >::GetDeviceList(), mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetRouteList(), InputMidiFileTest::in, mutabor::initialize_box_data(), mutabor::CommonMidiOutput< T, D >::SetBendingRange() und mutabor::CurrentTimer::UseRealtime().

5873 {
5874 #ifdef DEBUG
5875 // mutabor::mutabor_debug_flags.timer = true;
5876 // mutabor::mutabor_debug_flags.midiio = true;
5877 // mutabor::mutabor_debug_flags.midifile = true;
5878 #endif
5879 
5880  // input device is set up during setUp
5881  CPPUNIT_ASSERT(mutabor::InputDeviceClass::GetDeviceList().size() == 1);
5882  CPPUNIT_ASSERT(mutabor::OutputDeviceClass::GetDeviceList().empty());
5883  CPPUNIT_ASSERT(mutabor::RouteClass::GetRouteList().empty());
5884  CPPUNIT_ASSERT(mutabor::BoxClass::GetBoxList().empty());
5885 
5887  midicmnOutputDevice * out;
5888  mutabor::ScopedBox box(NULL);
5889  mutabor::ScopedRoute route;
5891 
5894  connect(route,box);
5896 
5897  std::string name = srcdir;
5898  name += ("/midiin.mut");
5899 
5900  std::ifstream file(name.c_str());
5901  CPPUNIT_ASSERT(file.is_open());
5902  file.seekg(0, std::ios::end);
5903  std::streampos length = file.tellg();
5904  file.seekg(0, std::ios::beg);
5905  char * logic_string = (char *) malloc((size_t)length+1);
5906  CPPUNIT_ASSERT(file.read(logic_string, length).gcount() == length);
5907  logic_string[length] = 0;
5908 
5909  MyCompileCallback callback;
5910  CPPUNIT_ASSERT(box->Compile(&callback, logic_string));
5911 
5912  free(logic_string);
5913  logic_string = NULL;
5914 
5915  route->SetActive(true);
5916 
5917 
5919  out = new midicmnOutputDevice(("Test"));
5920  out->SetBendingRange(2);
5921  //out = new midicmnOutputDevice(3,("Test"));
5922  guard = out;
5923 
5924  connect(route,guard);
5925  route->SetOutputFrom (0);
5926  route->SetOutputTo (15);
5927  route->OutputAvoidDrumChannel (true);
5928 
5929  connect(route, in);
5930 
5931  CPPUNIT_ASSERT( in );
5932  in -> SetName(SRCDIR "/sysex.mid");
5933 
5934 
5935  // First check: Input device provides the correct delta times
5938 
5939 // in -> Play(wxTHREAD_JOINABLE);
5941 
5942  CPPUNIT_ASSERT(out->Check(("\
5943 0 Opened...\n\
5944 0 0: e0 00 40\n\
5945 0 0: b0 7a 00\n\
5946 0 0: b0 7d 00\n\
5947 0 0: b0 7f 00\n\
5948 0 0: b0 65 00\n\
5949 0 0: b0 64 00\n\
5950 0 0: b0 06 02\n\
5951 0 0: b0 26 00\n\
5952 0 1: e1 00 40\n\
5953 0 1: b1 7a 00\n\
5954 0 1: b1 7d 00\n\
5955 0 1: b1 7f 00\n\
5956 0 1: b1 65 00\n\
5957 0 1: b1 64 00\n\
5958 0 1: b1 06 02\n\
5959 0 1: b1 26 00\n\
5960 0 2: e2 00 40\n\
5961 0 2: b2 7a 00\n\
5962 0 2: b2 7d 00\n\
5963 0 2: b2 7f 00\n\
5964 0 2: b2 65 00\n\
5965 0 2: b2 64 00\n\
5966 0 2: b2 06 02\n\
5967 0 2: b2 26 00\n\
5968 0 3: e3 00 40\n\
5969 0 3: b3 7a 00\n\
5970 0 3: b3 7d 00\n\
5971 0 3: b3 7f 00\n\
5972 0 3: b3 65 00\n\
5973 0 3: b3 64 00\n\
5974 0 3: b3 06 02\n\
5975 0 3: b3 26 00\n\
5976 0 4: e4 00 40\n\
5977 0 4: b4 7a 00\n\
5978 0 4: b4 7d 00\n\
5979 0 4: b4 7f 00\n\
5980 0 4: b4 65 00\n\
5981 0 4: b4 64 00\n\
5982 0 4: b4 06 02\n\
5983 0 4: b4 26 00\n\
5984 0 5: e5 00 40\n\
5985 0 5: b5 7a 00\n\
5986 0 5: b5 7d 00\n\
5987 0 5: b5 7f 00\n\
5988 0 5: b5 65 00\n\
5989 0 5: b5 64 00\n\
5990 0 5: b5 06 02\n\
5991 0 5: b5 26 00\n\
5992 0 6: e6 00 40\n\
5993 0 6: b6 7a 00\n\
5994 0 6: b6 7d 00\n\
5995 0 6: b6 7f 00\n\
5996 0 6: b6 65 00\n\
5997 0 6: b6 64 00\n\
5998 0 6: b6 06 02\n\
5999 0 6: b6 26 00\n\
6000 0 7: e7 00 40\n\
6001 0 7: b7 7a 00\n\
6002 0 7: b7 7d 00\n\
6003 0 7: b7 7f 00\n\
6004 0 7: b7 65 00\n\
6005 0 7: b7 64 00\n\
6006 0 7: b7 06 02\n\
6007 0 7: b7 26 00\n\
6008 0 8: e8 00 40\n\
6009 0 8: b8 7a 00\n\
6010 0 8: b8 7d 00\n\
6011 0 8: b8 7f 00\n\
6012 0 8: b8 65 00\n\
6013 0 8: b8 64 00\n\
6014 0 8: b8 06 02\n\
6015 0 8: b8 26 00\n\
6016 0 9: e9 00 40\n\
6017 0 9: b9 7a 00\n\
6018 0 9: b9 7d 00\n\
6019 0 9: b9 7f 00\n\
6020 0 9: b9 65 00\n\
6021 0 9: b9 64 00\n\
6022 0 9: b9 06 02\n\
6023 0 9: b9 26 00\n\
6024 0 10: ea 00 40\n\
6025 0 10: ba 7a 00\n\
6026 0 10: ba 7d 00\n\
6027 0 10: ba 7f 00\n\
6028 0 10: ba 65 00\n\
6029 0 10: ba 64 00\n\
6030 0 10: ba 06 02\n\
6031 0 10: ba 26 00\n\
6032 0 11: eb 00 40\n\
6033 0 11: bb 7a 00\n\
6034 0 11: bb 7d 00\n\
6035 0 11: bb 7f 00\n\
6036 0 11: bb 65 00\n\
6037 0 11: bb 64 00\n\
6038 0 11: bb 06 02\n\
6039 0 11: bb 26 00\n\
6040 0 12: ec 00 40\n\
6041 0 12: bc 7a 00\n\
6042 0 12: bc 7d 00\n\
6043 0 12: bc 7f 00\n\
6044 0 12: bc 65 00\n\
6045 0 12: bc 64 00\n\
6046 0 12: bc 06 02\n\
6047 0 12: bc 26 00\n\
6048 0 13: ed 00 40\n\
6049 0 13: bd 7a 00\n\
6050 0 13: bd 7d 00\n\
6051 0 13: bd 7f 00\n\
6052 0 13: bd 65 00\n\
6053 0 13: bd 64 00\n\
6054 0 13: bd 06 02\n\
6055 0 13: bd 26 00\n\
6056 0 14: ee 00 40\n\
6057 0 14: be 7a 00\n\
6058 0 14: be 7d 00\n\
6059 0 14: be 7f 00\n\
6060 0 14: be 65 00\n\
6061 0 14: be 64 00\n\
6062 0 14: be 06 02\n\
6063 0 14: be 26 00\n\
6064 0 15: ef 00 40\n\
6065 0 15: bf 7a 00\n\
6066 0 15: bf 7d 00\n\
6067 0 15: bf 7f 00\n\
6068 0 15: bf 65 00\n\
6069 0 15: bf 64 00\n\
6070 0 15: bf 06 02\n\
6071 0 15: bf 26 00\n\
6072 0 -1: SysEx 01 00 7f 01 End\n\
6073 1 -1: SysEx 7e 01 7f 03 End\n\
6074 2 -1: SysEx 7e 0a 7e 02 End\n\
6075 3 -1: SysEx 7e 00 01 02 7d 04 End\n\
6076 4 -1: SysEx 7e 00 03 04 7c 05 End\n\
6077 5 -1: SysEx 7e 02 7b 06 End\n\
6078 6 -1: SysEx 7e 03 01 23 45 08 01 00 00 02 00 00 00 00 00 02 00 00 01 End\n\
6079 7 -1: SysEx 7e 04 03 01 23 End\n\
6080 8 -1: SysEx 7e 05 02 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7e End\n\
6081 9 -1: SysEx 7e 06 05 01 23 45 01 02 01 01 00 00 02 00 00 End\n\
6082 10 -1: SysEx 7e 07 05 02 23 45 01 00 End\n\
6083 11 -1: SysEx 7e 08 06 01 End\n\
6084 12 -1: SysEx 7e 09 06 02 08 7e 6d 5c 4b 00 04 00 00 End\n\
6085 546 ...closed.\n\
6086 "),__LINE__,(__FILE__)));
6087 
6088 }
mutabor::InputDevice in
Definition: DevMidFTest.h:84
void initialize_box_data()
Definition: Box.cpp:1057
static const listtype & GetBoxList()
Definition: Box.h:340
static const routeListType & GetRouteList()
Definition: Route.h:404
void UseRealtime(bool flag)
Switch between realtime and batch mode.
Definition: timing.h:458
not for headers
Definition: midicmnTest.h:67
void connect(Route r, OutputDevice out)
Definition: Route-inlines.h:59
void SetBendingRange(int br)
Definition: midicmn.h:552
bool Check(std::string s, int line=-1, std::string filename=(__FILE__))
Definition: midicmnTest.h:88
static Box Create(int type, int id=NewBox)
Definition: Box.h:899
static const listtype & GetDeviceList()
Definition: Device.h:752
static bool BatchPlay()
Play all input devices in batch mode The batch mode allows for direct conversion of data in a complex...
Definition: Device.cpp:446
CurrentTimer CurrentTime
Definition: timing.cpp:43
static Route Create()
Creates a generic route.
Definition: Route.h:595
template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
thistype* mutabor::CommonTypedDeviceAPI< T, P, L >::thisptr ( )
inline

Definiert in Zeile 778 der Datei Device.h.

778  {
779  return static_cast<thistype *>(this);
780  }
template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
const thistype* mutabor::CommonTypedDeviceAPI< T, P, L >::thisptr ( ) const
inline

Definiert in Zeile 782 der Datei Device.h.

782  {
783  return static_cast<const thistype *>(this);
784  }
const char* mutabor::to_string ( error_type  type)
inline
mutabor::BoxClass::tone::tone ( )
inline
mutabor::BoxClass::tone::tone ( base  t)
inline

Definiert in Zeile 146 der Datei Box.h.

146 :base(t) {}
hidden::mutabor_tone base
Definition: Box.h:140
mutabor::BoxClass::tone::tone ( int  inkey)
inline

Definiert in Zeile 147 der Datei Box.h.

Benutzt mutabor::hidden::MUT_INTERVAL::active, mutabor::hidden::mutabor_active_tone, mutint64 und mutabor::hidden::MUT_INTERVAL::value.

147  : base ()
148  {
150  value = ((mutint64)inkey) << 24;
151  }
hidden::mutabor_tone base
Definition: Box.h:140
#define mutint64
Definition: Defs.h:89
enum mutabor_interval_type_constants active
Definition: Interpre.h:81
mutabor::BoxClass::tone_entry::tone_entry ( double  p)
inline

Definiert in Zeile 481 der Datei Box.h.

481  :pitch(p),
482  flag(sounding) {}
enum mutabor::BoxClass::tone_entry::@42 flag
mutabor::BoxClass::tone_entry::tone_entry ( )
inline

Definiert in Zeile 483 der Datei Box.h.

483  :pitch(0.0),
484  flag(silent) {}
enum mutabor::BoxClass::tone_entry::@42 flag
std::string GisReadHead::ToString ( )
virtual

Erneute Implementation in GisReadArtHead.

Definiert in Zeile 348 der Datei GIS_Head.cpp.

Benutzt mutabor::str().

Wird benutzt von GisReadHead::operator std::string() und GisReadArtHead::ToString().

349 {
350  std::string ret = boost::str(boost::format("GisReadHead: {\nthis: %p; Boss: %p; Next: %p; Prev: %p; PrevPtr: %p; *PrevPtr: %p;\n"
351  "nSub: %d; Cursor: {\n")
352  % (void*)this% (void*)Boss% (void*)Next% (void*)Prev%
353  (void*)PrevPtr% (void*)*PrevPtr% nSub) +
354  (Cursor?((std::string) *Cursor):std::string((""))) + ("}\nTime: ") + (str(Time)) +
355  boost::str(boost::format("; Id: '%s'; Turn: %d; SingleToken: %d\n}\n")%
356  Id.c_str()% Turn% SingleToken);
357  return ret;
358 }
GisToken * Cursor
Definition: GIS_Head.h:71
GisReadHead ** PrevPtr
Definition: GIS_Head.h:68
GisReadHead * Boss
Definition: GIS_Head.h:69
std::string str(T obj)
Definition: Defs.h:110
GisReadHead * Next
Definition: GIS_Head.h:68
GisReadHead * Prev
Definition: GIS_Head.h:68
mutabor::frac Time
Definition: GIS_Head.h:72
char Turn
Definition: GIS_Head.h:74
int nSub
Definition: GIS_Head.h:70
bool SingleToken
Definition: GIS_Head.h:75
std::string Id
Definition: GIS_Head.h:73
std::string GisReadArtHead::ToString ( )
virtual

Erneute Implementation von GisReadHead.

Definiert in Zeile 619 der Datei GIS_Head.cpp.

Benutzt mutabor::str() und GisReadHead::ToString().

Wird benutzt von GisReadArtHead::operator std::string().

620 {
621  std::string ret = ("GisReadArtHead: {\n") ;
622  ret += GisReadHead::ToString();
623  ret += ("Time2: ") + (str(Time2));
624  ret += boost::str(boost::format("; Delta: %ld; Box: %d (%p)\n"
625  "Intensity: %p; Articulation: %p; Octave: %p\n"
626  "Alter: %p; Instr: %p; Tempo: %p\n"
627  "}\n") % Delta % Box->get_routefile_id() % Box.get() %
628  (void*)Intensity % (void*)Articulation % (void*)Octave %
629  (void*)Alter % (void*)Instr % (void*)Tempo);
630  return ret;
631 }
TagList * Instr
Definition: GIS_Head.h:174
std::string str(T obj)
Definition: Defs.h:110
mutint64 Delta
Definition: GIS_Head.h:166
TagList * Alter
Definition: GIS_Head.h:173
TagList * Intensity
Definition: GIS_Head.h:170
boost::intrusive_ptr< BoxClass > Box
Definition: Box.h:121
TagList * Tempo
Definition: GIS_Head.h:175
mutabor::frac Time2
Definition: GIS_Head.h:165
virtual std::string ToString()
Definition: GIS_Head.cpp:348
TagList * Octave
Definition: GIS_Head.h:172
TagList * Articulation
Definition: GIS_Head.h:171
template<class I = InputDevice, class O = OutputDevice, class B = Box>
mutabor::TRouteClass< I, O, B >::TRouteClass ( )
inlineprotected

Definiert in Zeile 487 der Datei Route.h.

487  :
488  userdata(this,"userdata") {
489  TRACEC;
490  AppendToRouteList(this);
491  InputDevice in (NULL);
492  OutputDevice out (NULL);
493  Create(in,out,RTall,
494  -1,-1,
495  NULL,
496  false,
497  -1,-1,true);
498  }
#define TRACEC
Definition: debug.h:246
all events will pass
Definition: Route.h:80
void Create(InputDevice &in, OutputDevice &out, RouteType type=RTall, int iFrom=-1, int iTo=-1, Box box=NULL, bool active=false, int oFrom=-1, int oTo=-1, bool oNoDrum=true)
static void AppendToRouteList(Route route)
Definition: Route.cpp:282
template<class I = InputDevice, class O = OutputDevice, class B = Box>
mutabor::TRouteClass< I, O, B >::TRouteClass ( InputDevice in,
OutputDevice out,
RouteType  type = RTall,
int  iFrom = -1,
int  iTo = -1,
Box box = NULL,
bool  active = false,
int  oFrom = -1,
int  oTo = -1,
bool  oNoDrum = true 
)
inlineprotected

Definiert in Zeile 500 der Datei Route.h.

510  :
511  userdata(this,"userdata")
512  {
513  TRACEC;
514  AppendToRouteList(this);
515  Create(in,out,type,
516  iFrom,iTo,
517  box,
518  active,
519  oFrom,oTo,oNoDrum);
520  }
#define TRACEC
Definition: debug.h:246
void Create(InputDevice &in, OutputDevice &out, RouteType type=RTall, int iFrom=-1, int iTo=-1, Box box=NULL, bool active=false, int oFrom=-1, int oTo=-1, bool oNoDrum=true)
static void AppendToRouteList(Route route)
Definition: Route.cpp:282
void mutabor::BoxClass::TruncateBoxList ( Box  dev)
staticprotected

Definiert in Zeile 304 der Datei Box.cpp.

Benutzt STUB.

305  {
306  STUB;
307  return;
308 #if 0
309  if (!boxList) return;
310 
311  if (boxList == dev) {
312  boxList = NULL;
313  return;
314  }
315 
316  DevicePtr d = boxList ;
317  while (d->GetNext() && d->GetNext() != dev) {
318  d = d->GetNext();
319  }
320  if (d->GetNext()) {
321  d -> SetNext(NULL);
322  }
323 #endif
324  }
#define STUB
Definition: debug.h:250
static listtype boxList
Definition: Box.h:805
template<class T , class P , class L >
void mutabor::CommonTypedDeviceAPI< T, P, L >::TruncateDeviceList ( DevicePtr  dev)
staticprotected

Definiert in Zeile 316 der Datei Device.cpp.

Benutzt STUB.

317  {
318  STUB;
319  return;
320 #if 0
321  if (!deviceList) return;
322 
323  if (deviceList == dev) {
324  deviceList = NULL;
325  return;
326  }
327 
328  DevicePtr d = deviceList ;
329  while (d->GetNext() && d->GetNext() != dev) {
330  d = d->GetNext();
331  }
332  if (d->GetNext()) {
333  d -> SetNext(NULL);
334  }
335 #endif
336  }
#define STUB
Definition: debug.h:250
static listtype deviceList
Definition: Device.h:694
static void mutabor::BoxClass::unlock_callback ( hidden::mutabor_logic_parsed logic)
static
void UnRavel ( )

Definiert in Zeile 803 der Datei GIS.cpp.

Benutzt Clear(), Current, LastOpenBracket, GisToken::Next, Para und TagName.

Wird benutzt von GisParse().

804 {
805  *Current = 0;
806  // unravel Next pointers
807 
808  while ( LastOpenBracket ) {
810  LastOpenBracket = p->Next;
811  p->Next = 0;
812  }
813 
814  // clear TagName
815  if ( TagName.size() ) Clear(&TagName);
816 
817  // clear Para
818  if ( Para ) delete Para;
819 }
Definition: GIS.h:116
GisToken * Para
Definition: GIS.cpp:112
GisToken * Next
Definition: GIS.h:120
std::string TagName
Definition: GIS.cpp:110
GisToken * LastOpenBracket
Definition: GIS.cpp:107
GisToken ** Current
Definition: GIS.cpp:107
void Clear(std::string *s)
Definition: GIS.cpp:493
void mutabor::BoxClass::Unregister ( ChangedCallback callback)
inlineprotected

Definiert in Zeile 845 der Datei Box.h.

Benutzt mutabor::BoxClass::callbacks.

845  {
846  callbacks.remove(callback);
847  }
std::list< ChangedCallback * > callbacks
Definition: Box.h:820
void mutabor::BoxClass::UpdateCallback ( struct mutabor_box_type b,
unsigned int  flags 
)
static

Definiert in Zeile 868 der Datei Box.cpp.

Benutzt mutabor::BoxClass::ChangedCallback::ActionChanged, mutabor::BoxClass::ChangedCallback::BoxChanged, mutabor::BoxClass::ChangedCallback::KeysChanged, mutabor::BoxClass::ChangedCallback::LogicChanged, mutabor::hidden::mutabor_action_changed, mutabor::hidden::mutabor_box_changed, mutabor::hidden::mutabor_keys_changed, mutabor::hidden::mutabor_logic_changed und mutabor::BoxClass::updateflags.

template<class I = InputDevice, class O = OutputDevice, class B = Box>
void mutabor::TRouteClass< I, O, B >::UpdateTones ( )
inline

Definiert in Zeile 238 der Datei Route.h.

238  {
239  if (Out && Out->IsOpen())
240  Out->UpdateTones(this);
241  }
OutputDevice Out
Definition: Route.h:463
void mutabor::BoxClass::UpdateTones ( )

Update the currently playing tones to the current tone system.

Zu beachten
this function was formerly defined as NotesCorrect

Definiert in Zeile 750 der Datei Box.cpp.

Benutzt mutabor::BoxClass::routes.

751  {
752  for (routeListType::const_iterator route = routes.begin();
753  route != routes.end(); route++) {
754  (*route)->UpdateTones();
755  }
756  }
routeListType routes
Definition: Box.h:813
void mutabor::OutputDeviceClass::UpdateTones ( RouteClass route)
inline

Definiert in Zeile 868 der Datei Device.h.

Benutzt mutabor::OutputDeviceClass::do_UpdateTones() und mutabor::OutputDeviceClass::write_lock.

868  {
869  ScopedLock lock(write_lock);
870  do_UpdateTones(route);
871  }
wxMutexLocker ScopedLock
Definition: thread.h:57
virtual void do_UpdateTones(RouteClass *route)=0
virtual wxThread::ExitCode mutabor::InputDeviceClass::WaitForDeviceFinish ( wxThreadWait  flags = wxTHREAD_WAIT_BLOCK)
inlinevirtual

Wait for the thread started with Play().

This function can be used to wait for the device to finish playing. It can be used for joinable threads, only. For detached threads its behaviour is undefined.

Parameter
flagsIndicators how to wait see wxThread::Wait for more detail.
Rückgabe
exit code from the thread after it has ended. Non-threaded devices will return NULL.

Definiert in Zeile 1197 der Datei Device.h.

1197 { return NULL; }
static bool mutabor::InputDeviceClass::was_last_stop ( )
inlinestatic

Definiert in Zeile 1176 der Datei Device.h.

Benutzt mutabor::InputDeviceClass::last_was_stop.

1176 { return last_was_stop; }
static bool last_was_stop
Definition: Device.h:1316
template<class I = InputDevice, class O = OutputDevice, class B = Box>
mutabor::TRouteClass< I, O, B >::WATCHEDPTR ( void  ,
routing  ,
TRouteClass< I, O, B >   
)
protected
virtual const char* mutabor::BoxFactory::FactoryNotFound::what ( void  ) const
throw (
)
inlinevirtual

Returns the thrown error message as a c-style string.

Definiert in Zeile 892 der Datei Box.h.

Benutzt mutabor::BoxFactory::FactoryNotFound::message_.

892 { return message_.c_str(); }
virtual const char* mutabor::DeviceFactory::FactoryNotFound::what ( void  ) const
throw (
)
inlinevirtual

Returns the thrown error message as a c-style string.

Definiert in Zeile 1358 der Datei Device.h.

Benutzt mutabor::DeviceFactory::FactoryNotFound::message_.

1358 { return message_.c_str(); }
void GisWriteHead::WriteChord ( )

Definiert in Zeile 1376 der Datei GIS_Head.cpp.

Benutzt ChordNote::CheckClose(), mutabor::CurrentTime, ChordNote::Data und ChordNote::Next.

1377 {
1378  if ( !ChordNotes ) return;
1379 
1380  // close open ties
1381  ChordNote *ANote = ChordNotes;
1382 
1383  while ( ANote ) {
1384  ANote->CheckClose();
1385  ANote = ANote->Next;
1386  }
1387 
1388  char BossLine = 1; // wether in Boss data also data for Chord;
1389 
1390  char SingleLine = 0; // wether there is in fact only one Line (no real chord)
1391 
1392  if ( Cursor == ChordPos )
1393  BossLine = 0;
1394 
1395  if ( !ChordNotes->Next && !BossLine )
1396  SingleLine = 1;
1397 
1398 #ifdef CHORDS_WITH_REST
1399  ChordNotes->AddRest();
1400 
1401 #endif
1402  if ( SingleLine ) // only one line (no real chord)
1403  {
1404  *(ChordNotes->Cursor) = *ChordPos;
1405  *ChordPos = ChordNotes->Data;
1406 
1407  if ( Cursor == ChordPos )
1409 
1410  ChordNotes->Data = 0;
1411  } else {}
1412 
1413  delete ChordNotes;
1414 
1415  ChordNotes = 0;
1416  CurrentTime = 0;
1417 }
GisToken ** Cursor
Definition: GIS_Head.h:435
ChordNote * ChordNotes
Definition: GIS_Head.h:324
GisToken ** ChordPos
Definition: GIS_Head.h:323
GisToken * Data
Definition: GIS_Head.h:434
void CheckClose()
Definition: GIS_Head.h:499
GisToken ** Cursor
Definition: GIS_Head.h:319
ChordNote * Next
Definition: GIS_Head.h:433
mutabor::frac CurrentTime
Definition: GIS_Head.h:320
mutabor::BoxClass::~BoxClass ( )
virtual

Definiert in Zeile 77 der Datei Box.cpp.

Benutzt debug_destruct_class(), DEBUGLOG, intrusive_ptr_add_ref(), TRACEC und UNREACHABLEC.

78  {
79  // if there are remaining pointers we have other problems.
80  DEBUGLOG (routing, "this = %p" ,(void*)this);
81  if (open) Close();
82 #ifdef DEBUG
83  // prevent from endless destroy loop
86  BoxListType::iterator i = FindInBoxList(this);
87  if (i != boxList.end()) {
89  // boxList.erase(i);
90  }
91 #endif
92  TRACEC;
94  if (box) free(box);
95  }
#define DEBUGLOG(level,...)
Definition: debug.h:240
void debug_destruct_class(void *ptr)
Definition: debug.cpp:126
static listtype boxList
Definition: Box.h:805
#define TRACEC
Definition: debug.h:246
struct mutabor_box_type * box
Definition: Box.h:810
void Close()
Definition: Box.h:423
void intrusive_ptr_add_ref(intrusive_ptr_T *obj)
static listtype::iterator FindInBoxList(Box b)
Definition: Box.h:856
#define UNREACHABLEC
Definition: debug.h:256
mutabor::BoxFactory::~BoxFactory ( )
virtual

Definiert in Zeile 963 der Datei Box.cpp.

963 {}
mutabor::BoxClass::BoxLock::~BoxLock ( )
inline

Definiert in Zeile 789 der Datei Box.h.

Benutzt mutabor::BoxClass::BoxLock::box.

789  {
790  box->UpdateTones();
791  box->ExecuteCallbacks(box->updateflags);
792  }
mutabor::BoxClass::ChangedCallback::~ChangedCallback ( )
inline

Definiert in Zeile 221 der Datei Box.h.

Benutzt mutabor::BoxClass::ChangedCallback::box.

221  {
222  if (box)
223  box->Unregister(this);
224  }
template<class T , class P , class L >
mutabor::CommonTypedDeviceAPI< T, P, L >::~CommonTypedDeviceAPI ( )
virtual

Definiert in Zeile 119 der Datei Device.cpp.

Benutzt debug_destruct_class(), DEBUGLOG, TRACEC und UNREACHABLEC.

120  {
121  // if there are remaining pointers we have other problems.
122  DEBUGLOG (routing, "this = %p" ,(void*)this);
123 #ifdef Debug
124  listttype::iterator i = FindInDeviceList(this);
125  if (i != deviceList.end()) {
126  UNREACHABLEC;
127  deviceList.erase(i);
128  }
129 #endif
130  debug_destruct_class(this);
131  TRACEC;
132  }
#define DEBUGLOG(level,...)
Definition: debug.h:240
void debug_destruct_class(void *ptr)
Definition: debug.cpp:126
#define TRACEC
Definition: debug.h:246
static listtype::iterator FindInDeviceList(DevicePtr dev)
Definition: Device.h:816
static listtype deviceList
Definition: Device.h:694
#define UNREACHABLEC
Definition: debug.h:256
virtual mutabor::Device::~Device ( )
inlinevirtual

Definiert in Zeile 512 der Datei Device.h.

Benutzt TRACEC.

512 { TRACEC; }
#define TRACEC
Definition: debug.h:246
mutabor::DeviceFactory::~DeviceFactory ( )
virtual

Definiert in Zeile 532 der Datei Device.cpp.

532 {}
virtual mutabor::BoxFactory::FactoryNotFound::~FactoryNotFound ( )
throw (
)
inlinevirtual

Definiert in Zeile 889 der Datei Box.h.

889 {}
virtual mutabor::DeviceFactory::FactoryNotFound::~FactoryNotFound ( )
throw (
)
inlinevirtual

Definiert in Zeile 1355 der Datei Device.h.

1355 {}
virtual mutabor::InputDeviceClass::~InputDeviceClass ( )
inlinevirtual

Definiert in Zeile 1119 der Datei Device.h.

Benutzt TRACEC.

1119 { TRACEC; }
#define TRACEC
Definition: debug.h:246
template<class I = InputDevice, class O = OutputDevice, class B = Box>
virtual mutabor::TRouteClass< I, O, B >::NoOutputDevice::~NoOutputDevice ( )
throw (
)
inlinevirtual

Definiert in Zeile 132 der Datei Route.h.

132 {}
virtual mutabor::OutputDeviceClass::~OutputDeviceClass ( )
inlinevirtual

Definiert in Zeile 844 der Datei Device.h.

Benutzt mutabor::Device::IsOpen(), mutASSERT und TRACEC.

844  {
845  TRACEC;
846  mutASSERT(!IsOpen());
847  TRACEC;
848  }
bool IsOpen() const
Definition: Device.h:633
#define TRACEC
Definition: debug.h:246
#define mutASSERT(expr)
mutabor::RouteFactory::~RouteFactory ( )
protectedvirtual

Destructor.

This destructor will destroy the route factory. It does not touch the route objects that are created using this class.

You should not delete the factory directly as it saves a pointer to

Definiert in Zeile 548 der Datei Route.cpp.

548 {}
mutabor::BoxClass::scoped_watchdog::~scoped_watchdog ( )
inline

Definiert in Zeile 800 der Datei Box.h.

Benutzt mutabor::BoxClass::BoxLock::box.

800  {
801  ScopedLock(box->logic_timing_mutex);
802  box->logic_timing = -1;
803  }
wxMutexLocker ScopedLock
Definition: thread.h:57
mutabor::ScopedBox::~ScopedBox ( )
inline

Definiert in Zeile 964 der Datei Box.h.

964  {
965  if (get())
966  get()->Destroy();
967  }
mutabor::ScopedInputDevice::~ScopedInputDevice ( )
inline

Definiert in Zeile 1491 der Datei Device.h.

1491  {
1492  if (get())
1493  get()->Destroy();
1494  }
mutabor::ScopedOutputDevice::~ScopedOutputDevice ( )
inline

Definiert in Zeile 1508 der Datei Device.h.

1508  {
1509  if (get())
1510  get()->Destroy();
1511  }
mutabor::ScopedRoute::~ScopedRoute ( )
inline

Definiert in Zeile 293 der Datei Route-inlines.h.

294  {
295  if (get())
296  get()->Destroy();
297  }
mutabor::BoxClass::set_callback::~set_callback ( )
inline

Definiert in Zeile 828 der Datei Box.h.

Benutzt mutabor::BoxClass::set_callback::box und mutabor::BoxClass::current_compile_callback.

828  {
830  }
CompileCallback * current_compile_callback
Definition: Box.h:832
template<class I , class O , class B >
mutabor::TRouteClass< I, O, B >::~TRouteClass ( )
virtual

Definiert in Zeile 55 der Datei Route.cpp.

Benutzt debug_destruct_class(), DEBUGLOG, mutASSERT und TRACEC.

56  {
57  DEBUGLOG (smartptr, "deleting %p" ,(void*)this);
58 #ifdef DEBUG
59  typename routeListType::iterator r =
60  std::find(routeList.begin(),
61  routeList.end(),
62  this);
63  mutASSERT(r == routeList.end());
64  TRACEC;
65 #endif
67  }
#define DEBUGLOG(level,...)
Definition: debug.h:240
void debug_destruct_class(void *ptr)
Definition: debug.cpp:126
#define TRACEC
Definition: debug.h:246
#define mutASSERT(expr)
static routeListType routeList
Definition: Route.h:472

Variablen-Dokumentation

std::string accedentials
static

Definiert in Zeile 68 der Datei GSP.cpp.

Wird benutzt von GisNote::GisNote() und ReadNote().

bool mutabor::BoxClass::logic_entry::active

Definiert in Zeile 461 der Datei Box.h.

template<class I = InputDevice, class O = OutputDevice, class B = Box>
bool mutabor::TRouteClass< I, O, B >::Active
protected
int mutabor::BoxClass::tone_system::anchor

Definiert in Zeile 489 der Datei Box.h.

Wird benutzt von MutTextBox::GetToneSystem() und mutabor::BoxClass::GetToneSystem().

char ArticulationHold[5] = { 80, 100, 90, 90, 60 }

Definiert in Zeile 39 der Datei GIS_Head.cpp.

Wird benutzt von GisReadArtHead::Read().

char ArticulationOff[5] = { 80, 80, 60, 127, 127 }

Definiert in Zeile 40 der Datei GIS_Head.cpp.

mutabor::hidden::mutabor_callback_type mutabor::BoxClass::backend_callbacks
staticprotected

Definiert in Zeile 833 der Datei Box.h.

Wird benutzt von mutabor::initialize_box_data().

int bad = 0
static

Definiert in Zeile 43 der Datei GSP_File.cpp.

Wird benutzt von InFile::NewLine(), OpenFile() und ReadNewLine().

uint8_t mutabor::ChannelData::bank_coarse
protected
uint8_t mutabor::ChannelData::bank_fine
protected
int mutabor::ChannelData::bend
protected
Box mutabor::BoxClass::ChangedCallback::box
template<class I = InputDevice, class O = OutputDevice, class B = Box>
Box mutabor::TRouteClass< I, O, B >::box
protected
Box mutabor::BoxClass::BoxLock::box
struct mutabor_box_type* mutabor::BoxClass::box
protected
BoxClass* mutabor::BoxClass::set_callback::box
private
template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::boxid
protected
BoxListType mutabor::BoxClass::boxList
staticprotected
std::string Brackets = ""

Definiert in Zeile 56 der Datei GSP.cpp.

Wird benutzt von DoParse() und GspParse().

std::list<ChangedCallback *> mutabor::BoxClass::callbacks
protected
int mutabor::BoxClass::current_tone_entry::channel

Definiert in Zeile 500 der Datei Box.h.

controller_vector mutabor::ChannelData::controller
protected
controller_vector mutabor::ChannelData::controller_changed
protected
RouteFactory* mutabor::RouteFactory::FactoryAlreadySet::created

Definiert in Zeile 574 der Datei Route.h.

GisToken** Current
CompileCallback* mutabor::BoxClass::current_compile_callback
protected
int mutabor::BoxClass::current_key_logic
protected

Definiert in Zeile 818 der Datei Box.h.

int mutabor::BoxClass::current_key_tonesystem
protected

Definiert in Zeile 817 der Datei Box.h.

current_keys_type mutabor::InputDeviceClass::current_keys
protected
std::string mutabor::BoxClass::current_logic
protected

Definiert in Zeile 815 der Datei Box.h.

std::string mutabor::BoxClass::current_tonesystem
protected

Definiert in Zeile 816 der Datei Box.h.

std::string CurrentLine
std::string CurrentLine
size_t CurrentPos
size_t CurrentPos
bool mutabor::ChannelData::data_is_rpn
protected

Definiert in Zeile 495 der Datei Device.h.

Wird benutzt von mutabor::ChannelData::get_index() und mutabor::ChannelData::set_controller().

int debugcount = 0

Definiert in Zeile 117 der Datei GIS.cpp.

char DelimitChars[] = "{}[]()"

Definiert in Zeile 74 der Datei GSP.cpp.

Wird benutzt von DoParse().

InputDevice mutabor::InputDeviceClass::current_keys_type::entry::device

Definiert in Zeile 1022 der Datei Device.h.

template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
CommonTypedDeviceAPI< T, P, L >::listtype mutabor::CommonTypedDeviceAPI< T, P, L >::deviceList
staticprotected
const std::string mutabor::DevTypeName
Initialisierung:
=
{
_mutN("Unknown"),
_mutN("Midi Port"),
_mutN("Midi File"),
_mutN("GUIDO .gmn File")
}
#define _mutN(x)
Definition: Defs.h:116

Definiert in Zeile 348 der Datei Route.cpp.

bool mutabor::Device::dirty
protected

Definiert in Zeile 650 der Datei Device.h.

Wird benutzt von mutabor::Device::Dirty() und mutabor::Device::IsDirty().

frac duration
static
int Eof

Definiert in Zeile 38 der Datei GSP_File.cpp.

Wird benutzt von DoParse(), GetSep(), GspParse(), ReadNewLine() und ReadParaStr().

int Eof

Definiert in Zeile 38 der Datei GSP_File.cpp.

Wird benutzt von DoParse(), GetSep(), GspParse(), ReadNewLine() und ReadParaStr().

BoxFactory::factorylist mutabor::BoxFactory::factories
staticprotected
DeviceFactory::factorylist mutabor::DeviceFactory::factories
staticprotected
RouteFactory * mutabor::RouteFactory::factory
staticprotected
boost::filesystem::ifstream* File

Definiert in Zeile 40 der Datei GSP_File.cpp.

Wird benutzt von CloseFile(), OpenFile() und ReadNewLine().

size_t mutabor::ChannelData::first_unchanged
protected

Definiert in Zeile 493 der Datei Device.h.

Wird benutzt von mutabor::ChannelData::Reset() und mutabor::ChannelData::set_controller().

enum { ... } mutabor::BoxClass::tone_entry::flag
enum { ... } mutabor::BoxClass::logic_entry::flags
GisReadArtProceed GisReadArtDummy
GisReadProceed GisReadDummy
int GspCurrentLineNr

Definiert in Zeile 28 der Datei GSP.cpp.

Wird benutzt von DoError(), GetSep(), GspParse(), ReadNewLine() und SavePos().

int GspCurrentLineNr

Definiert in Zeile 28 der Datei GSP.cpp.

Wird benutzt von DoError(), GetSep(), GspParse(), ReadNewLine() und SavePos().

int GspError
int GspError
std::string GspErrorLine

Definiert in Zeile 31 der Datei GSP.cpp.

Wird benutzt von CheckError(), DoError(), GetInFile(), GspParse() und main().

std::string GspErrorLine

Definiert in Zeile 31 der Datei GSP.cpp.

Wird benutzt von CheckError(), DoError(), GetInFile(), GspParse() und main().

int GspErrorLineNr

Definiert in Zeile 29 der Datei GSP.cpp.

Wird benutzt von CheckError(), DoError(), GetInFile(), GspParse(), main() und mutabor::InputGis::Open().

int GspErrorLineNr

Definiert in Zeile 29 der Datei GSP.cpp.

Wird benutzt von CheckError(), DoError(), GetInFile(), GspParse(), main() und mutabor::InputGis::Open().

int GspErrorPos

Definiert in Zeile 30 der Datei GSP.cpp.

Wird benutzt von CheckError(), DoError(), GetInFile(), GspParse(), main() und mutabor::InputGis::Open().

int GspErrorPos

Definiert in Zeile 30 der Datei GSP.cpp.

Wird benutzt von CheckError(), DoError(), GetInFile(), GspParse(), main() und mutabor::InputGis::Open().

const char* GspErrorText[]

Definiert in Zeile 31 der Datei GSP_Err.cpp.

Wird benutzt von GetInFile(), main() und mutabor::InputGis::Open().

const char* GspErrorText[]

Definiert in Zeile 31 der Datei GSP_Err.cpp.

Wird benutzt von GetInFile(), main() und mutabor::InputGis::Open().

size_t mutabor::BoxClass::current_tone_entry::id

Definiert in Zeile 499 der Datei Box.h.

int mutabor::BoxFactory::FactoryNotFound::id

Definiert in Zeile 881 der Datei Box.h.

int mutabor::DeviceFactory::FactoryNotFound::id

Definiert in Zeile 1347 der Datei Device.h.

template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::IFrom
protected
const size_t mutabor::ChannelData::IGNORE_UNIQUE_ID = ULONG_MAX
static

Definiert in Zeile 104 der Datei Device.h.

Wird benutzt von mutabor::CommonMidiOutput< T, D >::do_Controller().

template<class I = InputDevice, class O = OutputDevice, class B = Box>
InputDevice mutabor::TRouteClass< I, O, B >::In
protected
char mutabor::InDevChanged
int mutabor::BoxClass::current_tone_entry::index

Definiert in Zeile 498 der Datei Box.h.

template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::inputid
protected
bool mutabor::Device::isOpen
protected
template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::ITo
protected
int mutabor::BoxClass::logic_entry::key

Definiert in Zeile 464 der Datei Box.h.

int mutabor::InputDeviceClass::current_keys_type::entry::key
char Komma

Definiert in Zeile 54 der Datei GSP.cpp.

Wird benutzt von DoParse() und GetSep().

bool mutabor::InputDeviceClass::last_was_stop = true
staticprotected
mutabor::frac LastDuration

Definiert in Zeile 114 der Datei GIS.cpp.

int LastOctave

Definiert in Zeile 113 der Datei GIS.cpp.

GisToken * LastOpenBracket

Definiert in Zeile 107 der Datei GIS.cpp.

Wird benutzt von BeginSegment(), BeginSequenz(), EndSegment(), EndSequenz(), GisParse() und UnRavel().

GisTagBegin* LastOpenRange

Definiert in Zeile 108 der Datei GIS.cpp.

Wird benutzt von BeginRange(), EndRange() und GisParse().

GisToken * LastPara

Definiert in Zeile 112 der Datei GIS.cpp.

Wird benutzt von BeginRange(), BuildTag(), EndParameter(), GisParse(), TagParaInt(), TagParaReal() und TagParaStr().

char LastTag

Definiert in Zeile 63 der Datei GSP.cpp.

Wird benutzt von DoParse(), GspParse() und ReadTag().

int mutabor::BoxClass::logic_timing
protected

Definiert in Zeile 835 der Datei Box.h.

Wird benutzt von mutabor::BoxClass::dog_watching().

Mutex mutabor::BoxClass::logic_timing_mutex
protected

Definiert in Zeile 836 der Datei Box.h.

Wird benutzt von mutabor::BoxClass::dog_watching().

mutint64 mutabor::BoxClass::loop_timeout
protected

Definiert in Zeile 837 der Datei Box.h.

bool mutabor::ChannelData::looped
protected

Definiert in Zeile 494 der Datei Device.h.

Wird benutzt von mutabor::ChannelData::Reset() und mutabor::ChannelData::set_controller().

watchdog<Box>* mutabor::BoxClass::loopguard
protected

Definiert in Zeile 838 der Datei Box.h.

Wird benutzt von mutabor::BoxClass::remove_watchdog().

map_type mutabor::InputDeviceClass::current_keys_type::map
protected
std::string mutabor::BoxFactory::FactoryNotFound::message_
std::string mutabor::DeviceFactory::FactoryNotFound::message_
bool minus

Definiert in Zeile 279 der Datei GSP.cpp.

Wird benutzt von ReadLong() und ReadParaNumber().

enum MutaborModeType mutabor::Device::Mode
protected
Mutex mutabor::BoxClass::mutex
protected
std::string mutabor::BoxClass::logic_entry::name

Definiert in Zeile 462 der Datei Box.h.

Wird benutzt von mutabor::append_triggers().

std::string mutabor::Device::Name
protected
int mutabor::BoxClass::nextboxid = Box0
staticprotected

Definiert in Zeile 806 der Datei Box.h.

Wird benutzt von mutabor::BoxClass::GetNextFreeBox().

int NumberLength

Definiert in Zeile 55 der Datei GSP.cpp.

Wird benutzt von ReadLong() und ReadParaNumber().

int octave
static

Definiert in Zeile 66 der Datei GSP.cpp.

Wird benutzt von GisNote::GisNote(), GspParse(), Note() und ReadNote().

template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::OFrom
protected
RouteFactory* mutabor::RouteFactory::FactoryAlreadySet::old

Definiert in Zeile 573 der Datei Route.h.

template<class I = InputDevice, class O = OutputDevice, class B = Box>
bool mutabor::TRouteClass< I, O, B >::ONoDrum
protected
bool mutabor::BoxClass::open
protected

Definiert in Zeile 814 der Datei Box.h.

Wird benutzt von mutabor::BoxClass::Close(), mutabor::BoxClass::IsOpen() und mutabor::BoxClass::Open().

template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::OTo
protected
template<class I = InputDevice, class O = OutputDevice, class B = Box>
OutputDevice mutabor::TRouteClass< I, O, B >::Out
protected
template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::outputid
protected
GisToken* Para
char ParaMode

Definiert in Zeile 53 der Datei GSP.cpp.

Wird benutzt von DoParse(), GetSep() und ReadTag().

double mutabor::BoxClass::tone_system::period

Definiert in Zeile 490 der Datei Box.h.

Wird benutzt von MutTextBox::GetToneSystem() und mutabor::BoxClass::GetToneSystem().

double mutabor::BoxClass::tone_entry::pitch

Definiert in Zeile 479 der Datei Box.h.

std::string PossibleErrorLine

Definiert in Zeile 37 der Datei GSP.cpp.

Wird benutzt von CheckError() und SavePos().

int PossibleErrorLineNr

Definiert in Zeile 35 der Datei GSP.cpp.

Wird benutzt von CheckError() und SavePos().

int PossibleErrorPos

Definiert in Zeile 36 der Datei GSP.cpp.

Wird benutzt von CheckError() und SavePos().

template<class I = InputDevice, class O = OutputDevice, class B = Box>
mutabor::TRouteClass< I, O, B >::REFPTR_INTERFACE
protected

Definiert in Zeile 539 der Datei Route.h.

template<class T, class P = boost::intrusive_ptr<T>, class L = std::vector <P>>
mutabor::CommonTypedDeviceAPI< T, P, L >::REFPTR_INTERFACE
private

Definiert in Zeile 686 der Datei Device.h.

mutabor::BoxClass::REFPTR_INTERFACE
private

Definiert in Zeile 872 der Datei Box.h.

GisToken* Root

Definiert in Zeile 106 der Datei GIS.cpp.

Wird benutzt von GisParse().

template<class I = InputDevice, class O = OutputDevice, class B = Box>
Route mutabor::TRouteClass< I, O, B >::NoOutputDevice::route

Definiert in Zeile 127 der Datei Route.h.

Wird benutzt von mutabor::TRouteClass< I, O, B >::NoOutputDevice::NoOutputDevice().

template<class I = InputDevice, class O = OutputDevice, class B = Box>
Route mutabor::TRouteClass< I, O, B >::NoInputDevice::route

Definiert in Zeile 136 der Datei Route.h.

Wird benutzt von mutabor::TRouteClass< I, O, B >::NoInputDevice::NoInputDevice().

Route mutabor::InputDeviceClass::current_keys_type::entry::route
template<class I = InputDevice, class O = OutputDevice, class B = Box>
int mutabor::TRouteClass< I, O, B >::routefile_id
protected
int mutabor::Device::routefile_id
protected

Definiert in Zeile 648 der Datei Device.h.

Wird benutzt von mutabor::Device::get_routefile_id() und mutabor::Device::set_routefile_id().

int mutabor::BoxClass::routefile_id
protected
template<class I = InputDevice, class O = OutputDevice, class B = Box>
TRouteClass< I, O, B >::routeListType mutabor::TRouteClass< I, O, B >::routeList
staticprotected
routeListType mutabor::Device::routes
protected
routeListType mutabor::BoxClass::routes
protected
const std::string mutabor::RTName
Initialisierung:
=
{
"ALL", "ELSE", "CHANNEL", "STAFF"
}

Definiert in Zeile 49 der Datei Route.cpp.

Wird benutzt von mutabor::TRouteClass< InputDevice, OutputDevice, Box >::GetTypeName(), compat30::SaveRoutes() und compat30::Str2RT().

std::string Sep = ""
std::string Sep
char SepChars[] = " \t\r\n"

Definiert in Zeile 73 der Datei GSP.cpp.

Wird benutzt von GetSep().

template<class I = InputDevice, class O = OutputDevice, class B = Box>
idtype<TRouteClass<I,O> > mutabor::TRouteClass< I, O, B >::session_id
protected
idtype<Device> mutabor::Device::session_id
protected

Id used during runtime;.

Definiert in Zeile 647 der Datei Device.h.

Wird benutzt von mutabor::Device::get_session_id().

idtype<BoxClass> mutabor::BoxClass::session_id
protected

Definiert in Zeile 811 der Datei Box.h.

Wird benutzt von mutabor::BoxClass::get_session_id().

const ChannelData* mutabor::InputDeviceClass::current_keys_type::entry::settings

Definiert in Zeile 1023 der Datei Device.h.

int mutabor::ChannelData::Sound
protected
std::string mutabor::BoxClass::logic_entry::startTuning

Definiert in Zeile 463 der Datei Box.h.

char TagMode
std::string TagName

Definiert in Zeile 110 der Datei GIS.cpp.

Wird benutzt von BeginRange(), BuildTag(), GisParse(), Tag() und UnRavel().

const char* Tags[NTAGS]

Definiert in Zeile 40 der Datei GIS.cpp.

Wird benutzt von GetTagId() und GisTag::GisTag().

const char* Tags[NTAGS]

Definiert in Zeile 40 der Datei GIS.cpp.

Wird benutzt von GetTagId() und GisTag::GisTag().

std::string TagSep

Definiert in Zeile 111 der Datei GIS.cpp.

Wird benutzt von BeginParameter(), BeginRange(), BuildTag(), EndParameter(), GisParse() und Tag().

const char* TagShorts[NTAGSHORTS]

Definiert in Zeile 96 der Datei GIS.cpp.

Wird benutzt von GetTagId() und GisTag::GisTag().

const char* TagShorts[NTAGSHORTS]
Initialisierung:
=
{
(""),
("i"),
("sl"),
("bm"),
("t"),
("|")
}

Definiert in Zeile 96 der Datei GIS.cpp.

Wird benutzt von GetTagId() und GisTag::GisTag().

tone_list mutabor::BoxClass::tone_system::tones

Definiert in Zeile 491 der Datei Box.h.

Wird benutzt von MutTextBox::GetToneSystem() und mutabor::BoxClass::GetToneSystem().

struct any_trigger mutabor::BoxClass::logic_entry::trigger

Definiert in Zeile 465 der Datei Box.h.

template<class I = InputDevice, class O = OutputDevice, class B = Box>
RouteType mutabor::TRouteClass< I, O, B >::Type
protected
size_t mutabor::InputDeviceClass::current_keys_type::entry::unique_id
unsigned int mutabor::BoxClass::updateflags
protected

Definiert in Zeile 819 der Datei Box.h.

Wird benutzt von mutabor::BoxClass::UpdateCallback().

void* mutabor::Device::userdata
private

Definiert in Zeile 676 der Datei Device.h.

Wird benutzt von mutabor::Device::getUserData() und mutabor::Device::setUserData().

void* mutabor::InputDeviceClass::current_keys_type::entry::userdata

Definiert in Zeile 1024 der Datei Device.h.

int mutabor::InputDeviceClass::current_keys_type::entry::velocity

Definiert in Zeile 1020 der Datei Device.h.

Mutex mutabor::OutputDeviceClass::write_lock
protected
Mutex mutabor::InputDeviceClass::write_lock
protected

Freundbeziehungen

friend class ::mutaborGUI::BoxData
friend

Definiert in Zeile 807 der Datei Box.h.

friend class ::mutaborGUI::GUIInputDeviceBase
friend

Definiert in Zeile 643 der Datei Device.h.

friend class ::mutaborGUI::GUIOutputDeviceBase
friend
Noch zu erledigen:
lift this restrection afer GUI is working again

Definiert in Zeile 642 der Datei Device.h.

friend class BoxFactory
friend

Definiert in Zeile 808 der Datei Box.h.

friend class DeviceFactory
friend

Definiert in Zeile 842 der Datei Device.h.

friend class DeviceFactory
friend

Definiert in Zeile 1014 der Datei Device.h.

void initialize_box_data ( )
friend

Definiert in Zeile 1057 der Datei Box.cpp.

1058  {
1060  }
static mutabor::hidden::mutabor_callback_type backend_callbacks
Definition: Box.h:833
mutabor_callback_type * mutabor_set_callbacks(mutabor_callback_type *callbacks)
Set the callbacks for the mutabor backend.
Definition: Execute.cpp:116
template<class I = InputDevice, class O = OutputDevice, class B = Box>
friend class mutaborGUI::GUIRouteBase
friend
Noch zu erledigen:
remove this reference after GUI is working again

Definiert in Zeile 111 der Datei Route.h.

template<class I = InputDevice, class O = OutputDevice, class B = Box>
friend class RouteFactory
friend

Definiert in Zeile 109 der Datei Route.h.


Erzeugt am Sam Apr 26 2014 12:58:29 für Mutabor von doxygen 1.8.6